C语言程序设计(11)

118 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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位电脑运行环境下:

image.png

32位电脑运行环境下:

image.png