1.变量:内存中的一个存储单元称之为一个变量。
2.变量名
3.变量的定义:int
4.如下程序片段:
int x = 32767; x = x + 1; printf("x = %d", x);输出是多少?
解答:输出为-32768。在各种码值表示方法中,补码形式表示出来的0的形式是唯一的,其他的码值表示方法会出现正零和负零的现象。所以定义符号位为1其余各位均为0的补码形式表示的值为负的最大值。本题当中,32767会以补码形式存放在x单元中,x的最高位为0是表示正的符号位,当给x加1之后,依次进位,使x中存储的二进制变为第一位为1,其余各位均为0的形式,所以输出的是负的最大值,这种全1形式的补码C语言规定为负的最大值。
5.长整型变量:long
由于长整型单元可以存储的范围可以包含基本的整型数,所以习惯上在长整型数后面加上大写或者小写的L。
长整型的输出控制符:%Ld, %ld
注意:如果将long型的变量赋值给int型变量,那么存入的只有低位部分。
6.短整型变量:short
7.无符号型:unsigned
无符号值:将一个有符号值的补码值的符号位看做数值位,0和正数部分,对应的无符号值不变,当值为负数时,因为符号位的影响值会发生变化。考虑补码的得到方式是将一个数的原码除符号位外其余位取反得到反码,反码加上原码应该是一个每个二进制位都是1的二进制数据,但是由于补码取反之后还要加1,所以对于负数有:无符号值- 有符号值 = 2^N,N代表这个数的存储空间大小,注意这里没有减1操作。
8.实型变量float:float
float最多可以存储7位有效数字,输出格式%f。
如果定义float
注意:对于浮点型变量的输出,计算机默认保留六位小数输出,但是数值并未发生变化,还是按7位有效数字存储。如果有效数字并没有达到小数点后六位,那么不足的位会输出随机值(不一定是0)。
9.双精度实型变量double:double
double类型可以接收15或者16位有效数字(具体是15位还是16位和机器有关,但一般都能接收到16位),屏幕上输出仍然是六位小数输出。
10.字符型变量:char
输出格式:%c
存储空间:一个字节,注意char类型变量可以存储负数。
11.不同类型变量之间的赋值:
(1)将整型赋值给实型,那么首先将整型数变为实型,然后赋值。
(2)单精度实型赋值给双精度实型,那么首先将单精度实型扩展为双精度实型,然后赋值。
(3)将实型赋值给整型:先舍去小数部分,将整数部分存储到整型单元。