uint32在c语言范围是多少_重学C语言——基础篇(三)

小拓展:C语言中int的正确使用姿势

上一节已经讲过,由于C语言中,整型的实际长度和范围不固定的问题,会导致C语言存跨平台移植的兼容问题,因此,C99标准中引入了stdint.h头文件,有效的解决了该问题。

#include<stdio.h>
#include<stdint.h>

int main(void){
    
    // 使用stdint.h中定义的类型表示整数
    int8_t a = 0;
    int16_t b = 0;
    int32_t c = 0;
    int64_t d = 0;

    // 前面加u,表示unsigned,无符号
    uint32_t e = 0;
    printf("int8 size is %dn",sizeof(int8_t));
    printf("int16 size is %dn",sizeof(int16_t));
    printf("int32 size is %dn",sizeof(int32_t));
    printf("int64 size is %dn",sizeof(int64_t));
    printf("uint32 size is %dn",sizeof(uint32_t));
}

打印结果:

int8 size is 1
int16 size is 2
int32 size is 4
int64 size is 8
uint32 size is 4

int8_t即表示8位整型,同理,int64_t就是64位整型,类型定义明确清晰,且能兼容多种平台。以上代码,使用32位编译器,编译成32位系统下的程序后,运行得到的结果依然不变。这里一定会有朋友质疑,为什么32位的系统下,还能表示并使用int64这种64位的整型?这当然就是stdint.h库给我们带来的便利了,简单说一下原理,如果当前平台的是32位的,那么经过组合,我们可以使用两个32位拼起来,不就能表示64位了吗?同理,即使是8位的CPU,经过这种拼合思路,照样能表示64位!当然,聪明人一眼就看出了弊端,使用这种拼合的方式,数据需要经过组合转换,处理也更加复杂,同时还会带来性能的损失,但是C99标准库已经为我们处理好了一切,虽然付出了一定的性能损失,但是成功的实现了C语言整型的跨平台兼容,这样的损失是完全值得的。

由于stdint.h头文件是C99标准引入的新特性,前面也说过微软的VC编译器不支持C99,那是不是VC就不能用了呢?好东西,当然人人眼馋,微软虽然表面上说不支持C99,但是这种有用的特性还是会引入,因此VS2010也引入了stdint.h头文件,在VS2010及其以后的版本中,可以放心使用。但是要注意,只是引入了这个新特性,而不是支持C99。这里就要吐槽了,目前还在使用VC6.0教学的,还是上个世纪的人么?说和工具没关系的这些人,害人匪浅。

语法基础

表达式

与其他编程语言不同,C语言强调表达式而不是语句。表达式就如同计算值的公式,通过运算符把变量和常量组合起来。

算术运算符

主要包括加减乘除 +-*/

求余数,即取模运算 %

二元的算术运算还包括自增和自减 ++--

自增和自减运算符可以作为前缀或后缀使用,如下

int i = 0;
i++;
++i;

那么i++++i的区别是什么呢? 关于这两者的区别,某些教材和网上一些资料是这样解释的,++做前缀,是先让i加1,做后缀则后加1,既在下一行代码前i被加1。类似这种说法其实是不准确的,甚至是错误的,理解太过于表面,只是对现象的概括而已。这里咱们就一次把这个问题彻底搞明白,永不犯迷糊。

前面已经说了,C语言强调的是表达式而不是语句,那么表达式和语句有什么区别呢?我个人认为其中一个区别就是表达式整体一定有一个值,而语句可以没有返回值。有其他编程基础的朋友一定清楚所谓返回值的概念,那么就是说表达式一定有一个返回值,或者应该说是表达式整体的值。

i++作为一个表达式,那么他的表达式的值是什么呢?其实我们可以用一个变量来保存表达式的值int r = i++;

int i = 0;
    int r = i++;

    printf("r=%dn",r);

可以看到,表达式的r值为0。这个例子就很清楚了,所谓表达式的值,其实就是(i&#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值