C语言学习记录2022.6.1全面了解操作符和整型提升

1、关于sizeof的注意要点(图片来自比特科技):

上图中代码的打印结果为2和0。第一个为2的原因是短整型变量s所占空间为2字节,第二个为0是因为在上一步的“s = a + 5”表达式中只是一个形式,并没有真正赋值,所以变量s的值还是0。

2、按位取反:

3、强制类型转换

4、关于逻辑与的注意点:

上图中,逻辑与“&&”的运算方式是从左往右的,首先算a++,a为0 ,然后碰到&&操作符,因为&&左边已经是0了,后面便不会再算了。算完&&接着a再自加1变成了1,因为第一个&&后面没有计算,所以b,c,d分别为2,3,4。

5、和逻辑与类似,逻辑或也有上述特点:

逻辑或也是从左向右计算碰到一个为真,那么后面的算式就不会再计算了。

6、条件操作符

第128行的条件操作符跟120-126行的if...else语句运行效果相同。

7、逗号表达式

逗号表达式是从左到右依次生效的,整个表达式的结果是最后一个表达式的结果。

8、结构体

结构体的使用方法如上。

还有一种简便的指针使用方法如下:

 上述代码的183-184行表达的意思与上上张图片中代码182-183行的代码相同,是其简洁的使用方法。作用是ps指向的结构体对象的成员名。

9、关于整型提升

整型提升的意思是如果我们在定义变量类型的时候使用的是char或short类型,在实际计算机运算的时候是会把它先编程32位(4字节)的普通整型来运算,这是由计算机内ALU决定的。在进行整型提升的时候,提升的位数由最高位的符号决定的(当为有符号数时)。

用以证明整型提升的例子1:

上图中代码被打印的只有“c”,因为a和b都发生了整型提升,已经与原来赋值的不匹配了,所以无法打印。 

体现整型提升的例子2(图片来自比特科技):

10、C操作符的优先级(图片来自菜鸟教程)

说明:上表中的“结合性”的意思是,操作符计算的方向,如a+b+c就要先算a+b,然后a+b+c。我们在写表达式的时候一定要保证表达式的计算路径的唯一性,也就是在不同的编译器上我们得到的结果应该是一样的,不然写出来的表达式有歧义就没有意义了,因为这样写出的代码的移植性较差。另外,我们也不必特意去记操作符的优先级,我们可以把复杂的表达式分成几个简洁的表达式来依次写出,或者可以用()操作符来提升我们的运算优先级,让自己也清楚地知道运算的方向。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值