最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

【天天速看料】c语言运算符优先级实例解析

来源:博客园


【资料图】

壹:对于优先级:算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符。逻辑运算符中“逻辑非 !”除外。这是程序员总结出来的最快的学习方式。可在实战中,还是经常遇到一些让人困惑的问题。下面看一个实例。贰:代码很简单,直接上源码:
#include typedef unsigned char uint8_t;typedef unsigned int uint32_t;uint8_t buf3[] = {0x12,0x34,0x56,0x78};int main(){        // unexpected result        uint32_t tick_num1 = buf3[0]<<8 + buf3[1];        printf("tick_num1 is:0x%x \n\r",tick_num1);        uint32_t tick_num2 = (buf3[0]<<8) + buf3[1];        printf("tick_num2 is:0x%x \n\r",tick_num2);        // unexpected result        uint32_t tick_num3 = buf3[0] + buf3[1]<<8 + buf3[2]<<16 + buf3[3]<<24;        printf("tick_num3 is:0x%x \n\r",tick_num3);        // expected result        uint32_t tick_num4 = buf3[3] + (buf3[2]<<8) + (buf3[1]<<16) + (buf3[0]<<24);        printf("tick_num4 is:0x%x \n\r",tick_num4);        return 0;}
假如不看运算结果,估计没几个人能把这个结果算出来,不信的话你可以试试。对的话直接来我们公司面试即可。叁:下面是运算结果,是不是有些出乎你的预料呢?
➜  char_vs_int git:(master) ✗ ./test tick_num1 is:0x20000000 tick_num2 is:0x1234 tick_num3 is:0x0 tick_num4 is:0x12345678 

建议吃不准的同学还是尽量加括号,这样才不至于犯大错。

关键词: 逻辑运算符 赋值运算符 算术运算符