C语言数据类型和变量

1.数据类型

C语言提供的各种数据类型包括:在这里插入图片描述
接下来讨论内置数据类型。

1.1字符型

• char
• [signed] char
• unsigned char

1.2整型

1.2.1短整型
• short [int]
• [signed] short [int]
• unsigned short [int]

1.2.2整型
• int
• [signed] int
• unsigned int
1.2.3长整型
• long [int]
• [signed] long [int]
• unsigned long [int]
1.2.4更长的整型(C99中引入)
• long long [int]
• [signed] long long [int]
• unsigned long long [int]

1.3浮点型

• float
• double
• long double

1.4布尔类型

C语言中0表示假,非零值表示真。
C99中引入了布尔类型_Bool,专门用来表示真假。
使用布尔类型包含头文件<stdbool.h>
布尔类型变量的取值是:true或false
在这里插入图片描述

1.5数据类型长度

每种数据类型都有自己的长度,用不同数据类型可创建出不同长度的变量,从而存储的数据范围有差异。

1.5.1sizeof操作符

sizeof是关键字,也是操作符,用来计算其操作数的类型长度,单位是字节。
sizeof的操作数是类型、变量或表达式。
sizeof(类型),若为变量或表达式,可省();sizeof的表达式不真实运算,而由表达式类型得结果;sizeof结果为size_t类型,又%zd适用于size_t类型的变量。

1.5.2各种数据类型长度

在这里插入图片描述

1.5.3sizeof中表达式不计算

在这里插入图片描述

2.signed和unsigned

C语言用 signed 和 unsigned 关键字修饰 字符型和整型。
signed 关键字,表示一个类型带正负号,包含负值;
unsigned 关键字,表示该类型不带正负号,只能表示零和正整数。
在这里插入图片描述
C语言规定 char 类型默认是否带有正负号,由当前系统决定。即char可能是 signed char ,也可能是unsigned char 。

3.变量

3.1创建变量

在这里插入图片描述

3.2变量分类

在{}外,为全局变量,整个工程中想使用全局变量,都可用;
在{}内,为局部变量,只在自己所在的局部范围内用。
在这里插入图片描述
局部变量和全局变量同名时,局部变量优先。
在这里插入图片描述
局部变量放在内存的栈区,全局变量放在内存的静态区。

4.算术操作符+ 、- 、* 、/ 、%

4.1 +和-

+和-有两个操作数,这种操作符也叫双目操作符。

4.2 *

在这里插入图片描述

4.3 /

除号两端如果是整数,执行整数除法,得到的结果也是整数。
在这里插入图片描述
至少一个浮点数才能得到浮点数结果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.4%求模/余

只能用于整数。
在这里插入图片描述
负数求模结果的正负号由第⼀个运算数的正负号决定。
在这里插入图片描述

5.赋值操作符

= 是⼀个随时可以给变量赋值的赋值操作符。

5.1连续赋值

在这里插入图片描述
建议“c=b=a+3"拆成两行写,方便观察。

5.2复合赋值符

对⼀个数进行自增、自减,
在这里插入图片描述

复合赋值符有+= 、-= 、*= 、/= 、%=等

6.单目操作符

C语言中有⼀些操作符只有⼀个操作数,被称为单目操作符,包括 ++、–、+(正)、-(负) 。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
+是⼀个完全可以省略的运算符。

7.强制类型转换

在这里插入图片描述

8. printf和scanf

8.1printf

printf() 的作用是将参数文本输出到屏幕。其中 f 代表 format (格式化),表示可以定制输出文本的格式。
printf() 不会在行尾自动添加换行符,运行结束后,光标就停留在输出结束的地方,不会自动换行。为了让光标移到下一行的开头,可以在输出文本结尾添加⼀个换行符 \n 。

8.1.1占位符

printf() 可在输出文本中指定占位符。所谓 “占位符”,即该位置可用其他值代入。
printf() 参数与占位符是一一对应关系,若有 n 个占位符, printf() 的参数就应有 n +1 个。如果参数个数少于对应占位符, printf() 可能会输出内存中的任意值。
在这里插入图片描述

8.1.2占位符列举

•%c :字符
• %d :十进制整数。// int
•%f :小数(包含 float 类型和 double 类型)。//float %f double - %lf
•%hd :十进制 short int 类型
•%hu :unsigned short int 类型
• %ld :十进制 long int 类型
•%lu :unsigned long int 类型
•%Lf :long double 类型浮点数

8.1.3输出格式

printf() 可定制占位符的输出格式。

8.1.3.1限定宽度

printf()可限定占位符最小宽度。
在这里插入图片描述
该限定符会限制小数所有数字的最小显示宽度。
在这里插入图片描述

8.1.3.2

在这里插入图片描述

8.1.3.3限定小数位数

在这里插入图片描述
这种写法可与限制宽度结合:
在这里插入图片描述
最小宽度和小数位数这两个限定值,可用 * 代替,通过 printf() 的参数传入。
在这里插入图片描述

8.1.3.4输出部分字符串

%s 占位符用来输出字符串,默认全部输出。
在这里插入图片描述

8.2scanf

8.2.1基本用法

scanf() 函数用于读取用户的键盘输入,它的原型定义在头文件 stdio.h 。用户输入数据、按下回车键后, scanf() 会处理用户的输入,将其存入变量。
变量前必须加&(指针变量如字符串除外),因为scanf传递的是地址,即 将变量的地址指向用户输入的值。
在这里插入图片描述
在这里插入图片描述
键盘一次输入多个变量:
在这里插入图片描述
在这里插入图片描述
scanf() 处理数值占位符时,会⾃动过滤空白字符,包括空格、制表符、换行符等。所以,用户输入的数据之间,有⼀个或多个空格不影响 scanf() 解读数据。另外,用户使用回⻋键将输入分成几行,也不影响解读。解读用户输入时,会从上一次解读遗留的第一个字符开始,直到读完缓存,或遇到第一个不符合条件的字符为止。
在这里插入图片描述
在这里插入图片描述

8.2.2scanf的返回值

scanf() 的返回值是⼀个整数,表示成功读取的变量个数。
如果没有读取任何项,或者匹配失败,则返回 0 。
如果在成功读取任何数据之前,发生了读取错误或读取到文件结尾,则返回常量 EOF (-1)。
EOF - end of file 文件结束标志。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
VS环境中按3次 ctrl+z ,结束输入。
在这里插入图片描述
在这里插入图片描述

8.2.3占位符

scanf() 常用占位符如下,与 printf() 的占位符基本⼀致。
• %c :字符。
• %d :整数。
• %f : float 类型浮点数。
• %lf : double 类型浮点数。
• %Lf : long double 类型浮点数。
• %s :字符串。
• %[] :在方括号中指定⼀组匹配的字符(如 %[0-9] ),遇到不在集合中的字符,匹配将停止。
上面所有占位符中,除 %c 以外,都自动忽略起首的空白字符(空格/换行符/制表符等)。%c 不忽略空白字符,总返回当前第一个字符,无论该字符是否为空格。
若要强制跳过字符前的空白字符,可写成 scanf(" %c", &ch) ,即 %c 前加上一个空格,表示跳过零个或多个空白字符。
在这里插入图片描述
在这里插入图片描述
使用%s时,从首个非空白字符读起,遇空白字符为止。
在这里插入图片描述

scanf() 不适合读取可能包含空格的字符串,如书名或歌曲名。
scanf() 将字符串读入字符数组时,不会检测字符串是否超过数组长度,可能导致数组溢出。为防止该情况发生,要限制读取字符串的最大长度:在这里插入图片描述

8.2.4赋值忽略符

用户的输入不符合预定格式时,scanf() 解析数据就会失败。为避免该情况, scanf() 提供了⼀个赋值忽略符* 。
只要把 * 加在任何占位符的百分号后面,该占位符就不会返回值,解析后将被丢弃。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值