c語言中!與有什麼區別?最好舉例說明

2021-05-10 13:19:06 字數 2932 閱讀 7853

1樓:匿名使用者

! 這個是 邏輯反,凡是a的值不為0的,!a 就等於0; 如果a的值為0,則 !a 的值為1

而~這個是 按位取反

比如 int a=2 ; 用二進位制表示為00 00 00 10;

則 !a = 0

而 ~a = 11 11 11 01 (按位取反後的二進位制結果,此結果為補碼形式)

求其原始碼為 : 10 00 00 11 即為 -3所以 ~a 的結果為 -3

2樓:灰紫太狼

c語言運算子級別分類 1級(左結合)

( ) 圓括號;[ ]下標運算子;->指向結構體成員運算子;. 結構體成員運算子。

2級(右結合)

「 ! 」邏輯非運算子;「 ~ 」按位取反運算子;「 ++ 」字首增量運算子;「 -- 」字首減量運算子;

「 - 」負號運算子;(型別)型別轉換運算子;「 * 」指標運算子;「 & 」地址運算子;

「sizeof 」 長度運算子。

3級(左結合)

「 * 」 乘法運算子;「 / 」 除法運算子;「 % 」 取餘運算子。

4級(左結合)

「 + 」加法運算子;「 - 」減法運算子。

5級(左結合)

<< 左移運算子;>> 右移運算子。

6級(左結合)

<、<=、>、>=關係運算子。

7級(左結合)

「 == 」等於運算子;「 != 」不等於運算子。

8級(左結合)

「 & 」按位與運算子。

9級(左結合)

「 ∧ 」按位異或運算子。

10級(左結合)

「 | 」按位或運算子。

11級(左結合)

「&&」邏輯與運算子。

12級(左結合)

「 || 」邏輯或運算子。

13級(右結合)

? :條件運算子。

14級(右結合)

=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=賦值運算子。

15級(左結合)

「,」 逗號運算子。

3樓:和i白度

這是2個不同運算子

!表示 邏輯非 否定,

~表示按位取反 只用於二進位制運算裡 ,1變成0,0變成1.

4樓:

!表示 邏輯非 比如:你有個變數bool的,bistrue,你可以用if(!bistrue){}這麼用

~表示按位取反 只用於二進位制運算裡 ,1變成0,0變成1.

5樓:一貓糧

! 若真為假,若家為真

~ 按為取反

eg: int a=0;

if(!a)

結果:a=5

eg: char a=0x01;

char b=0x00;

b=~a;

結果:b=0xfe

6樓:匿名使用者

~是取反

!是取非

對於一位1或者0,當然是沒區別

對於多位的話,顯然就有區別了,你自己應該能明白了吧

7樓:匿名使用者

!是邏輯非,如!1=0,!0=1

~是按位取反,就是把數值化成二進位制位,再按照上面的!的方法對每一位進行運算,如~15=0

8樓:小草的追求

下面說的好詳細,,看譚浩強老師的吧,

c語言裡,i++與++i的區別,最好舉例說明

9樓:媯淑琴嚴鵑

i++是使用後再加1,如果i的初始值是0、輸出i++則為0

++i是使用前加1,如果i的初始值是0、輸出++i則為1

10樓:匿名使用者

前置的++,是變數先自增1,然後再作其他操作,後置的++,是先取變數當前的值操作,然後再自增1你的例子中,i的初始值是1,執行k = ++i;時,先執行了 i = i + 1,也就是i的值變為2,再把i的值賦給k,所以k的值是2,i的值也是2

執行z = i ++;時,先取i的值賦給z,此時i的值是2,所以z也是2,然後再執行i= i + 1,這條語句執行完成後,i的值變為3

11樓:潛素芹田培

i++:(++在後)在程式取用i時,i是原來的值,當該行指令執行完畢時i自動加1

++i:(++在前)在程式取用i時,i先自動加1後再執行該行指令..

12樓:匿名使用者

i++ 和 ++i的基本功能是相同的,都是對變數i進行自增1運算,從功能上講相當於i =i+1 ;

++運算子分為字首++和字尾++,如i++中的++就是字尾運算子,++i中的就是字首運算子,兩個的區別在於:

字首++,先使用變數,再進行變數自增1

字尾++,先進行變數自增1,再使用變數

現在分析你的**:

i=1;

k=++i; //先加,後用,i=i+1=2 k=i=2z=i++; //先用,後加,z=i=2, i=i+1=3輸出 22

13樓:曾德文溥夏

i++是先使用變數的值,後加1;

++i是先自加1,然後使用變數的值。

本例中:

str[j++]=str[i];

相當於:先賦值,後自加。

str[j]=str[i];

j++;

14樓:卿連枝戈雀

區別大啦

++i,i++,a

如果a=

++i;

等價於i=

i+1;a=

i;如果a

=i++;

等價於a=i;

i=i+

1;往往處理這些時,要與編譯器聯絡起來,多個++i相加想見與編譯器有關的

c語言中與的區別,c語言中「 」與「 」有什麼區別?

c語言中 與 的區別如下 是否為單行註釋 是用於多種語言的單行註釋語句。是註釋語句,不限制行數,在 和 之間的即為註釋。實用性的區別 是用於多種語言的單行註釋語句,適用方便快捷,但是實用性不如多行註釋 是註釋語句,不限制行數,在 和 之間的即為註釋,實用性大,但是符號鍵盤敲打麻煩。程式編譯時,不對註...

c語言中a與a有什麼區別,C語言中a與a的區別是什麼?詳細一點,謝謝!

這要看a是什麼了,如果a是指標變數,那麼a代表這個指標變數,a代表這個指標變數所指向的目標。如果不是指標那麼 a不是正確的寫法。c語言中a 與 a的區別是什麼?詳細一點,謝謝!a 是先返回a的值,再執行 運算。a 是先執行 運算,在返回a的值。例如 include int main a 7a 先使用...

C語言中pa與pa有什麼區別

p a 0 令p所指向地址的內容等於a 0 p是一個一級指標 p a 0 令p所指向地址的內容等於a 0 的地址,p是一個二級指標。c語言中 p a 0 與p a 0 有什麼區別?對於指標來說,p a 0 表示向地址為p的記憶體區域賦值為a 0 p a 0 把變數p的值改為a 0 這個語句正常應用中...