今天在編寫微控制器程式時,錯誤將算術運算子&寫成了邏輯運算子&&,結果導致程式出現錯誤。於是就認真的再次學習了一下&和&&這兩種運算子到底有什麼區別。
先用乙個簡單的例子來看看這兩種運算子的運算結果是什麼?
圖一是為了驗證這兩種運算子的區別而特意寫的程式,圖二是程式執行結果。
圖一 演示程式
圖二 運算結果
從運算結果就可以看出,算術運算子&執行的結果得到的是乙個具體的數值,而邏輯運算子執行的結果是0或者1。
算術運算子&運算的時候是將運算子兩側的數先轉換成二進位制,然後進行「按位與」操作。
邏輯運算子&&運算的時候是判斷運算子兩側的數是不是都為「真」,只有都為真,結果才是「真」,也就是結果是1,否則只要兩個運算元有乙個為「假「,那麼得到的結果就是「假」,也就是結果為0。
&,是算術運算子,同時也是乙個雙目運算子:運算時將兩個表示式的值按二進位制位展開,對應的位(bit)按值進行「與」運算,結果保留在該位上…
比如上面例子中的0x40&0x59
轉換成二進位制後的運算就是
0100 0000
&0101 1001
=0100 0000=0x40
每一對應位只要有乙個值為0結果為0,否則結果為1。
如果兩數字數不同,則較短數高位補零,再運算,比如char a=100;int b=260;
a&b實際是0000 0000 0110 0100&0000 0001 0000 0100.其結果為int型0000 0000 000 0100即4…
&&:邏輯運算子,同時也是乙個
雙目運算子,計算兩個表示式同時成立的「真值」(同時成立真值為真否則為假)
邏輯真值有兩種,1為真,0為假,但在運算時用非零表示真,0表示假…
即:數值->邏輯真值--非0為真,0為假/邏輯真值->數值--真為1,假為0…
例如:char a=1,b=0,c=-1;那麼a真b假c真。a&&b和c&&b為假值為0,a&&c為真值為1
C語言中的運算子
c語音中的運算子,按其功能,可以分為 算數運算子,關係運算子,邏輯運算子,自增和自減運算子,按位運算子,賦值運算子,和條件運算子。1 算數運算子 運算元可以為任何基本型別,運算結果的型別和運算元型別相同。2 關係運算子 運算元可以為任何基本型別,一般為整型,運算結果,如果兩個運算元關係成立,則結果為...
C語言中的運算子
c語言中的運算子 一 運算子 1 算術運算子 2 賦值運算子 賦值運算子用 來給變數賦值。注意,在c語言中 不表示相等,而只是乙個運算子。3 增量和減量運算子 在程式開發中,我們經常需要對乙個變數的值執行加1或者減1的操作。例如 x x 1 x x 1 為簡化這種操作,c語言提供了增量運算子 和減量...
c語言中的運算子
c語言運算子 是說明特定操作的符號 它是構造c語言表示式的工具 c語言 的運算異常豐富,除了控制語句和輸入輸出以外的幾乎所有的基本操作都為運算子處理。除了常見的三大類,算術 運算子 關係運算子與邏輯運算子之外,還有一些用於完成特殊任務的運算子,比如位運算子。一 算術運算子 1.加法運算子 除了可以進...