C語言為什麼語句while(!x)和while(x)不等價

2022-06-29 07:26:53 字數 1703 閱讀 8782

1樓:匿名使用者

!是邏輯非,所以表示式!x的值就只有兩種可能真(1)或假(0)

而~是按位取反,是二進位制位取反,例如~0的值是二進位制位都為1

2樓:匿名使用者

while(!x) 與while( x==0 )相同

while( ~x ) 中~運算子表示按位取反 , 如0000001 取反結果為11111110,還是不為0,而00000001取非時,結果為00000000,所以,這兩個是不同的!

3樓:匿名使用者

!是非,~是取反

看似差不多,其實在某些地方是不一樣的

邏輯非,我只見過對一個邏輯判斷的數字,比如:

int x = 1;

while(!x) //當x不等於0時

如果是取反,那可以支援較長的數字,比如:

100010101110010

取反後得011101010001101

4樓:匿名使用者

!是邏輯運算子非,while(!x)就是x不等於0的時候迴圈條件成立。

~是位運算子號,取反,while(~x)的意思是,位x取反,迴圈恆成立的。

5樓:shiro灬

!是邏輯運算子取反 ~是位運算子取反 第一個是真值取反 第二個是對數值的二進位制按位取反

!運算子的運算結果是 true變false false變true 比如:int a = 1; int b = !a; b中的值為0

~運算子的運算結果是一個數字的每一位二進位制取反 比如~(01001001)2結果為(10110110)2

6樓:丕屰教育

「 ! 」邏輯非運算子:!x執行結果只要x不是0,則其結果為0(假);如果0為0,則其結果為1(真)

「 ~ 」按位取反運算子:~x,按照x的二進位制位取反,只有x的二進位制是11111111(全1),則其結果為0(假),否則其結果一定不是0(真)

希望能夠幫到你。

7樓:

!是邏輯非,0變成1,任何非0的數變成0,~是按位取反,將一個數二進位制表示的每一位1變成0,0變成1。

比如一個變數x值為00000001,

那麼!x值為0,而~x為11111110

8樓:風若遠去何人留

!x和~x的計算規則不同,所以二者不能等價。

用於while()條件時,當表示式結果為0,while退出,否則while繼續迴圈。

對於!x,只有當x為0時,表示式結果為真,while會繼續迴圈;對於其它的值,!x的結果都是0,會退出迴圈。

於是!x的真值就是

x = 0, !x=1

x!=0, !x=0

而對於~x,是按位取反。

所以,只有當x的每位均為1時,結果為0。其它x值的運算結果均非0.

於是~x的真值為

x的每位全為1, ~x為0.

x的任意一位不為1,~x為非0值。

舉例來說,當x=1時,!x為0,while(!x)會退出迴圈。

而x=1時,~x結果與x型別相關,但一定不為0,這時while(~x)不會退出迴圈。

9樓:科技大記事

(!x)這是非x

(~x)這個不認識

廢話,肯定不=價啊

c語言開關語句C語言中的開關語句是什麼?

c語言的開關語句即switch語句,一般格式如下 switch 條件 這由數字的大小什麼沒有關係,它是滿足那個case就執行那個case。例如a 2 switch a 那麼就先執行case2.如果a 0 那麼就先執行case0.default是所有條件均不滿足的情況下才執行,例如a 3就會執行。de...

c語言中語句ab是什麼意思C語言中語句ab是什麼意思

先解釋一下 和 是 什麼意思 的意思是 左值和右值相加結果賦值給左值如 a 1 b 2 a b 後,a 3 b 2。的意思是變數自加1,如a 1 a a的值是2,在c中,有前置和後置如 a a 單獨使用的時候是沒有區別的,都是自加1,在有運算時就有區別了,前置的 是自加後才參與運算,後置的 是參與運...

C語言條件語句問題,c語言for語句中的條件問題

一個表示式的返回值都可以用來判斷真假,除非沒有任何返回值的void型和返回無法判斷真假的結構。當表示式的值不等於0時,它就是 真 否則就是假。一樣個表示式可以包含其他表示式和運算子,並且基於整個表示式的運算結果可以得到一個真 假的條件值。因此,當一個表示式在程式中被用於檢驗其真 假的值時,就稱為一個...