*本文为作者自留,用以复习
C语言提供了以下数据类型:
注:在使用char,int,float,double类型时,不加unsigned默认为有符号
1.布尔类型:专门用来描述真和假的类型
C语言在最初以整数0表示假,非零值表示真,C99时引入了布尔类型表示真假。
此类型的使用需要包含头文件<stdbool.h>,取值为ture或false
_Bool flag = true;
if (flag)
printf("i like C\n");
2.sizeof操作符
sizeof()括号内可以是类型或表达式,为表达式或变量名时时,可以省略括号。
sizeof中的表达式不会真正的计算,只会确定表达式的类型。
sizeof运算符的返回值中,C语言只规定是无符号整数,并没有规定具体的类型,因为不同系统返回值的类型可能不同,故C语言创造了一个类型别名size_t,用来统一表示sizeof的返回值类型。
3.数据类型长度
{
printf("%zd\n", sizeof(char));//1
printf("%zd\n", sizeof(_Bool));//1
printf("%zd\n", sizeof(short));//2
printf("%zd\n", sizeof(int));//4
printf("%zd\n", sizeof(long));//4
printf("%zd\n", sizeof(long long));//8
printf("%zd\n", sizeof(float));//4
printf("%zd\n", sizeof(double));//8
printf("%zd\n", sizeof(long double));//8
return 0;
}
可以发现,long [int] 和 int 的长度相同,这是因为C语言标准规定了long的长度大于或等于4,只要满足这个条件即可。
4.signed和unsigned
这两个关键字用来修饰字符型和整型。
signed关键字表示一个类型带有正负号,包含负值。
unsigned关键字表示该类型不带有正负号,只能表示零和正整数。
将整数变量声明为unsigned后,同样长度的内存能够表示的最大整数值增大了一倍,16位的signed short int的取值范围是:-32768~32767,最大为32767;而unsigned short int的取值的范围为:0~65535,最大值增大到了65535。
数据类型的取值范围
limits.h和float.h文件可以查看整型和浮点型类型的取值范围。
也有以下常量表示极限值:
4.全局变量和局部变量
全局变量定义在大括号外部,当局部变量和全局变量同名时,局部变量优先使用。
这两个变量在内存中的存储如下: