变量类型(秋八周)
1.变量的类型、取值范围、输入/输出格式
char 以%c输出为字符,以%d输出为字符的ascall码十进制值
char 1字节,short int 2字节,long int 4字节
unsigned表示非符号数,从0开始,最高位为\(2^n-1\),n为变量的位数,unsigned类型可以用%u输入输出,unsigned long int 以%lu输入输出
double和float可以用%le和%e输入指数形式的浮点数,double可以用%e输出指数形式浮点数(小数点前有且仅有一位非零的数字)
注意
%d为有符号的整数格式,%u为无符号的整数格式
%x表示十六进制(字母小写输出),%o表示八进制,%X大写时字母大写输出
记忆:
short int之所以取%hd,即short的第二个字母是因为%s表示字符串
非符号数的范围为\([-2^{n-1},2^n-1],n\)为类型的位数,这与二进制的编码有关。负数部分,最高位为1,其余几位为0时该数为负数的最小值,如1000 0000,先取反再+1,得1000 0000,为128,故负数最小值为-128;正数部分,最高位为0,其余全取1,取得正数最大值,如0111 1111表示为127。
计算机内部以补码存储数据。
double精度比float高,float输入输出用%f,double输入输出用%lf
上述类型有些表达可以化简,如下:
2.char类型字符变量
char类型既可以是字符也可以是char类型整数,分别对应%c和%d(或%o,%x)格式
了解ascII码
'A'=65 'a'=97 '0'=48(十进制)
getchar()函数
C语言输入函数支持缓冲功能,即你一连输入多个字符或数据按下回车时,数据会先放在缓冲区
getchar()函数会从缓冲区中读取一个字符
效果等同于scanf("%c",&c)
putchar()函数
输出字符
3.char类型的常数格式
常数由单引号引住,有且只有一个字符
'\n':回车
'\t' : 制表符
'A\t','AB\t'……输出结果如下
'\b':不能简单理解为退格
printf("123456789\b");
输出为123456789
printf("1234567\b\b\b\b89");
输出1238967
可以看到,在输出1234567之后,因为紧接着要输出4个\b,这时程序把光标前(左)移了4个字符的位置,然后输出了89这两个字符,占用了45这两个字符的位置。但是因为67这两个字符已经输出,所以仍然显示在那里。
'\a':喇叭发声
一些易混淆的char及注意点
十六进制字符常数
十六进制的字符常数以'\x'开头,后面加16进制的ascII码值
八进制字符常数
八进制的字符常数以'\ '开头,后面加8进制的ascII码值
4.int类型常数格式
0x开头为十六进制int常数
0开头为八进制int常数
后缀l或L表示long型常量,后缀u或U表示unsigned型常量,后缀lu或LU表示unsigned long型常量
5.小数类型常数格式
6.字符转化
需要记住0,A,a的ascII码值,'0'+1='1','A'+1='B'以此类推
移位有一个通用公式,以大写字母为例,65+(m-65+x%26)%26,m为当前ascII码值,x为移位值
大写字母+32=小写字母
7.标识符(变量名)命名规则
标识符由数字、字母、下划线组成,且不能以数字开头,也不得与C语言函数重复