返回

c语言表达式求值和操作符属性

发布时间:2022-12-16 07:03:32 263

一、表达式求值

表达式求值顺序一部分是由操作符的优先级和结合性决定。同样,有些表达式的操作数在求值的过程中可能需要转化为其他类型

1.隐式类型转换

表达式中的字符和短整型操作数在使用之前被转换为普通整型——整型提升。

char a=3;
//使用前转换为普通整型,从8位变成32位00000000000000000000000000000011;正数补码原码相同
//截断最后八位放到a里00000011
char b=127;
//00000000000000000000000001111111
//01111111
char c=a+b;//-126
//符号位为0,整型提升前面补0
//00000000000000000000000000000011
//00000000000000000000000001111111
//00000000000000000000000010000010
//10000010 c
//整型提升11111111111111111111111110000010 补码
11111111111111111111111110000001 反码
00000000000000000000000001111110 原码 -126

a,b的值被提升为普通整型,再执行加法运算,完成后被截断,存储在c中。

c语言表达式求值和操作符属性_操作符

字符只要参与运算,就会发生整型提升。

2.算术转换

1)非赋值运算:不同类型操作数在一起运算,一个操作数要转换为另一个操作数的类型

c语言表达式求值和操作符属性_操作符_02


排名低的向高的转换

2)赋值运算 变量=表达式   表达式类型自动转换成变量类型(注意表达式值是否超过变量所属类型的取值范围)

将取值范围小的转换为大的是安全的,反之不安全,可能会字节丢失。

补充:如何实现小数的四舍五入?   (int)(a+0.5)

二、操作符的属性

1.操作符的优先级

2.操作符的结合性

3.是否控制求值顺序

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
选数 2022-12-16 06:40:23