1、数据类型的介绍
C语言提供了丰富的数据类型用来描述生活中的各项数据。例如某人的身高是1.8m(浮点型数据),体重是100斤(整型)。
1.1字符型(字符的本质就是整数,因为字符在内存中存储的是ascll值的二进制形式)
1.2整型
1.3浮点型
1.4布尔类型(_Bool)
布尔类型是用来表示真假的类型。C语言中之前没有布尔类型,是用0表示假,非0表示真。布尔类型是C99标准中引入的,布尔类型的变量有两种取值,分别是true(真)与false(假)。使用布尔类型前要包含头文件<stdbool.h>
2.各种数据类型的长度
根据不同的数据类型创建的变量,能存储的数据的取值范围通常有差异。
2.1:sizeof操作符
2.1.1:对于sizeof(表达式)而言,sizeof只关心括号内表达式是什么类型,然后计算该类型在内存中占了多少字节,括号内的表达式并不会被执行
int main()
{
short s = 5;
int n = 10;
printf("%zd\n", sizeof(s = n + 5));//2个字节
/*
sizeof并不会去计算s=n+5这个表达式,它会认为n和5都是整型,两者相加的结果也是整型,
将整型赋值给短整型后,整个表达式的类型也是短整型。故sizeof求的是短整型所占的空间。 短整型占2个字节
*/
printf("%d\n", s);//5,s的值并没有变
printf("%zd\n", sizeof(n = n + 5));//4个字节
/*
sizeof并不会去计算n=n+5这个表达式,它会认为它会认为n和5都是整型,两者相加的结果也是整型,
将整型赋值给整型后,整个表达式的类型也是整型,故sizeof计算的是整型所占的空间
*/
printf("%d\n", n);//10,n的值并没有变
return 0;
}
2.1.2:C语言规定sizeof的返回值是无符号整数,它的返回值类型是由编译器决定的,可能是unsigned int 、unsigned long 、unsigned long long,这三种返回值类型分别需要用%u、%lu、%llu来打印。这样的话就不利于程序的移植性,C语言为了解决这个问题,单独为sizeof的返回值创建了size_t类型,用%zd来打印size_t类型。另外,规定strlen函数的返回值类型也是size_t。另外size_t类型在使用前要包含头文件<stdio.h>,(头文件里面不光有函数的声明,可能还有类型的声明)
2.2计算机中内存的单位
2.3:计算各种数据类型的长度
C语言规定: sizeof(long)>= sizeof(int) ;sizeof(long double) >= sizeof(double)
#include<stdio.h>
#include<stdbool.h>
int main()
{
printf("%zd\n", sizeof(char));//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",