溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言位運算的坑舉例分析

發(fā)布時間:2021-11-22 15:23:21 來源:億速云 閱讀:109 作者:iii 欄目:互聯(lián)網科技

這篇文章主要講解了“C語言位運算的坑舉例分析”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C語言位運算的坑舉例分析”吧!

比如下面這個例子:

short a = 0xBC54;           //二進制為:1011 1100 0101 0100short b = 0x07A3;           //二進制為:0000 0111 1010 0011if((a | b) == 0xBFF7) {//0xBFF7二進制為:10111111 1111 0111    puts("true");} else {    puts("false");}

程序會打印“true”還是“false”呢?

答案是“false”。

因為C語言的位操作里有個規(guī)則,如果操作數(shù)長度小于“signed/unsigned int”,會把操作數(shù)轉型為“signed/unsigned int”再進行位操作。上述代碼里,進行“a|b”操作時,實際上是“((int)a)|((int)b)”操作,“a|b”這個表達式的類型其實是“int”,在上述代碼中的值是0xFFFFBFF7。

上述代碼里如果a和b的類型是“unsignedshort”,那么程序會打印“true”,因為“a|b”操作實際上是“((unsigned int)a)|((unsigned int)b)”操作。

感謝各位的閱讀,以上就是“C語言位運算的坑舉例分析”的內容了,經過本文的學習后,相信大家對C語言位運算的坑舉例分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI