操作符知识点(下)

操作符的属性:优先级、结合性
1.优先性:如果⼀个表达式包含多个运算符,哪个运算符应该优先执⾏

eg:3+7*5中,优先计算的是*再到+

2.结合性:两个运算符优先级相同,优先级没办法确定先计算哪个了,这时候就看结合性了

一般都是左到右执行,少数(eg:=)从右往左执行

(优先操作符在上一篇结尾处有常用的一些符号了,需要的自行查看,也可以网上查)

表达式求值

整型提升
1.讨论的是char ,short 使⽤之前被转换为普通整型(目的是为了更加精确)

//整形提升
//int main()
//{
//    char a = 20;
//    //00000000000000000000000000010100
//    //char只存八字节
//    //00010100  -a
//
//
//    char b = 130;
//    //00000000000000000000000010000010
//    //10000010   -b
//
//    char c = a + b;
//    //00000000000000000000000000010100   -a
//    //11111111111111111111111110000010    -b
//    //11111111111111111111111110010110    截断      -   补码  
//    //10010110  -c
//    //11111111111111111111111110010110   -提升  --补码变原码--取反+1
//    //10000000000000000000000001101001
//    //10000000000000000000000001101010
//    // 01101010
//    // %d打印有符号的整数
//    //char类型的取值范围-128~127
//    printf("%d", c);
//
//    return 0;
//}

对于上面代码(复制去编译器更容易看,可以对齐数字):

1.a+b加完后内存存的仍然是补码
char只有存8个比特位

2.char类型的取值范围-128~127

3.char不一定是signed char,取决于编译器,vs上,char===signed char

优先级只能决定先×后-,而决定不了调用哪个先

eg:score = math() + english() * test()

有调用,但是不知道先哪个被调用先

总结:尽量不要写复杂的表达式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值