跳转至

变量类型(秋八周)

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语言函数重复