开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第11天,点击查看活动详情
数据类型
C语言的类型
整数:char、short、int、long、long long;
浮点数:float、double、long double;
逻辑:bool;(一般来说属于整数的范围内)
指针;
自定义类型。
类型有何不同
类型名称:int、long、double
输入输出时的格式化:%d;%ld;%lf
所表达的数的范围:char<short<int<float<double;
内存中所占据大小:1个字节到16个字节;
内存中的表达形式:二进制数(补码)(整数的表达形式);编码(浮点数的表达形式)。
由于浮点数的表达形式是编码,导致浮点数无法直接在计算机内部做运算。
sizeof
是一个运算符,给出某个类型或变量在内存中所占的字节数
sizeof(int)->int在内存中占据几个字节
sizeof(i)->i变量在内存中占几个字节
#include<stdio.h>
int main()
{
int a;
a=6;
printf("sizeof(int)=%ld\n",sizeof(int));
printf("sizeof(a)=%ld\n",sizeof(a));
return 0;
}
运行结果:sizeof(int)=4
sizeof(a)=4
意思为:int在内存中占据4个字节,也就是32个比特。同理:sizeof(double)=8、sizeof(long double)=16。
sizeof是一个静态运算符,它的结果在编译时刻就决定了;
不要在sizeof里面做运算,这些运算是不会做的。
{
int a=6;
printf("sizeof(a+1.0)=%ld\n",sizeof(a+1.0));
} ->结果为sizeof(a+1.0)=8,原因是本来a是int类型,在sizeof中1.0为浮点数,a+1.0将会对a进行强制类型转换,导致sizeof(a+1.0)的结果是double在内存中所占字节数
整数类型
利用sizeof
#include<stdio.h>
int main()
{
printf("sizeof(char)=%ld\n",sizeof(char));
printf("sizeof(short)=%ld\n",sizeof(short));
printf("sizeof(int)=%ld\n",sizeof(int));
printf("sizeof(long)=%ld\n",sizeof(long));
printf("sizeof(long long)=%ld\n",sizeof(long long));
return 0;
}
64位电脑运行环境下:
32位电脑运行环境下: