C语言基础复习——基本变量类型

@C语言基础复习

C语言基础复习

基本变量类型

int类型

int 整形 占4字节Byte 32bit
int 的表示范围 -2^31 ~ 2^31-1 (-2147483648~2147483647)
超过int的上下限会发生溢出

无符号整型 unsigned int 同样占有四个字节,但是把nt的最高位也用来表示数字,
因此范围比int大,但是却只能表示正数
void test_int(){
    //int 整形 占4字节Byte 32bit
    printf("int占有的字节数:\t%d\n", sizeof(int));
    //int 的表示范围 -2^31 ~ 2^31-1 (-2147483648~2147483647)
    printf("int的上限:\t%d\n", 2147483647);
    printf("int的下限:\t%d\n", -2147483648);
    //超过int的上下限会发生溢出
    printf("int溢出啦:\t%d\n", 2147483647 + 1);

    /*无符号整型 unsigned int 同样占有四个字节
    但是吧int的最高位也用来表示数字,因此范围比int大
    但是却只能表示正数*/
    printf("\nunsigned int占有的字节数:\t%d\n", sizeof(unsigned int));
    //unsigned int 的表示范围 0 ~ 2^32-1 (0~4294967295)
    printf("unsigned int的上限:\t%u\n", 4294967295);
    printf("unsigned int表示负数时会变成:\t%u\n", -20);
    //超过int的上下限会发生溢出
    printf("unsigned int溢出啦:\t%u\n", 4294967295 + 1);

}

运行截图:
在这里插入图片描述

其他整形

void other_int(){
    //int的兄弟们有: short, long, long long
    //基本性质和int相似
    printf("short占有的字节数:\t%d\n", sizeof(short));
    printf("long占有的字节数:\t%d\n", sizeof(long));
    printf("long long占有的字节数:\t%d\n", sizeof(long long));

}

在这里插入图片描述

浮点类型

float : 单精度浮点数
double : 双精度浮点数
float(32位) :精确到小数点后6~7位
double(64位) :精确到小数点后15~16位

单精度浮点数在机内存占4个字节
双精度浮点数在机内存占8个字节

单精度浮点数有效数字8位
双精度浮点数有效数字16位

单精度浮点数的表示范围:-3.40E+38~3.40E+38
双精度浮点数的表示范围:-1.79E+308~-1.79E+308

一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快

如果不声明,默认小数为double类型,所以如果要用float的话,必须进行强转
void test_float(){
    
    float pi = 3.1415926535897932;
    double pi1 = 3.14159265358979323846264338327950;
    printf("float精度:\t%f\n", pi);
    printf("double精度:\t%.16lf\n", pi1);

    printf("float占有的字节数:\t%d\n", sizeof(float));
    printf("double占有的字节数:\t%d\n", sizeof(double));

}

在这里插入图片描述

字符类型

字符型变量只占一个字节。

这点可能有点令人疑惑。
凭啥区区int都能占4字节,我堂堂字符不配拥有姓名吗?
其实这是因为C语言使用ascii码表示char,而ascii码使用8位二进制数表示一个字符,正好对应一个字节(Byte)。但是你会发现ASCII中没有中文。

早期在制定标准的时候,并且考虑到非拉丁字符。目前,计算机已经在全世界范围内使用。为了兼容早期的ASCII,高于127的数值,将会被用于其他语言字符。但是,这还是不够用于所有的非英文字符的。所以,中文字符会是由多个char组成(通常是2个)。

void test_char(){
    //char只占有一个字节
    char a = 'a';
    printf("字符a%c:\t\n", a);
    printf("char占有的字节数:\t%d\n", sizeof(a));
    //不要给char类型变量传一个字符串,输出时会发生未知错误
    char b = "abcdef";
    printf("\n用char表示字符串:\t%c\n", b);
    //使用char* 来指向字符串
    //实际上你指定的字符串名字,就是指向字符串首字母的指针
    char* c = "abcdef";
    printf("\n用char*表示字符串:\t%s\n", c);
    printf("\n两种操作字符串的方式:\n");
    printf("\n1. c[i]:\t%c\n", c[2]);
    printf("\n2. c + 2:\t%c\n");
}

指针类型

所有类型的指针,都只有四位长度。
其中void*为万用指针,可以和指向所有类型指针,而不进行强制转换
void test_point(){
    //所有类型的指针,都只有四位长度
    printf("int*占有的字节数:\t%d\n", sizeof(int*));
    printf("char*占有的字节数:\t%d\n", sizeof(char*));
    printf("short*占有的字节数:\t%d\n", sizeof(short*));
    printf("long*占有的字节数:\t%d\n", sizeof(long*));
    printf("float*占有的字节数:\t%d\n", sizeof(float*));
    printf("double*占有的字节数:\t%d\n", sizeof(double*));
    printf("void*占有的字节数:\t%d\n", sizeof(void*));
}

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值