c語言邏輯運算if abc 錯誤

2022-05-07 03:30:16 字數 5128 閱讀 9467

1樓:笨a小孩

if (a > b > c)確實是錯誤的,原因在於:表示式a > b > c會依次從左到右進行計算,即相當於(a > b) > c 先計算

a > b,如果成立,會返回1, 否則會返回0; 之後再比較1 > c或者 0 > c這樣就導致和你想要的結果不同

例如: a=4,b=3,c=2 則a > b返回1, 1 > c返回0,a > b > c最終返回的是0,認為不成立

a=4,b=3,c=0,則a > b返回0,  1 > c返回1, a > b > c最終返回的是1,認為成立

因此要表達a > b > c這樣的邏輯,正像你說的,應該使用 if (a > b && b > c)

看下面例子程式的輸出結果

#include

#include

int main()

int a = 4, b = 3, c = 2, d = 0;

if (a > b > c)

printf("a > b > c : right\n");

else

printf("a > b > c : wrong\n");

if (a > b > d)

printf("a > b > d : right\n");

else

printf("a > b > d : wrong\n");

if (a > b && b > c)

printf("a > b > c : right\n");

else

printf("a > b > c : wrong\n");

return 0;

執行結果如下:

a > b > c : wrong

a > b > d : right

a > b > c : right

希望對你有幫助 :)

2樓:因特納雄耐爾一定會實現

根據結合型規則,if(a>b>c) 是先判斷a是不是大於b a大於b的話 那麼表示式a>b的值為1,再將1和c的值做比較, 關係運算子得到的結果是邏輯值(0或者1)!

3樓:

a>b>c 是應該 if(a>b&&b>c)這樣寫,你的想法完全正確!

4樓:匿名使用者

你的if(a>b&&b>c)要表示的是a>b>c,只有a>b與b>c同時為真才執行if後面語句的,要相信自己!

5樓:___遊

如果你想要表達 a>b>c 是應該 if(a>b&&b>c)這樣寫的

if(a>b&&a>c) 是 a>c且a>b

在哪看的錯誤答案?要相信自己的判斷,不要一味的相信課本。。

c語言中 if(a||b&&c) ......... 什麼意思啊?謝謝。。

6樓:

||1&&表示邏輯與運算;

2||表示邏輯或運算;

3&&運算優先順序高於||運算;

4 舉例:

(3>2)||(1>2)&&(3>4)

=true||false&&false

=true||false

=true------------1

7樓:

若a=1並且b=2(執行該步操作後,b的值加1為3)。

邏輯運算子是根據表示式的值來返回真值或是假值。其實在c語言中沒有所謂的真值和假值,只是認為非0為真值,0為假值。

符號 功能

&& 邏輯與

|| 邏輯或

! 邏輯非

當表示式進行&&運算時,只要有一個為假,總的表示式就為假,只有當所有都為真時,總的式子才為真。當表示式進行||運算時,只要有一個為真,總的值就為真,只有當所有的都為假時,總的式子才為假。邏輯非(!

)運算是把相應的變數資料轉換為相應的真/假值。若原先為假,則邏輯非以後為真,若原先為真,則邏輯非以後為假。

還有一點很重要,當一個邏輯表示式的後一部分的取值不會影響整個表示式的值時,後一部分就不會進行運算了。例如:

a=2,b=1;

a||b-1;

因為a=2,為真值,所以不管b-1是不是真值,總的表示式一定為真值,這時後面的表示式就不會再計算了。

這是一類特殊的運算子,自增運算子++和自減運算子--對變數的操作結果是增加1和減少1。例如:

--couter;

couter--;

++amount;

amount++;

看這些例子裡,運算子在前面還是在後面對本身的影響都是一樣的,都是加1或者減1,但是當把他們作為其他表示式的一部分,兩者就有區別了。運算子放在變數前面,那麼在運算之前,變數先完成自增或自減運算;如果運算子放在後面,那麼自增自減運算是在變數參加表示式的運算後再運算。這樣講可能不太清楚,看下面的例子:

num1=4;

num2=8;

a=++num1;

b=num2++;

a =++num1;這總的來看是一個賦值,把++num1的值賦給a,因為自增運算子在變數的前面,所以num1先自增加1變為5,然後賦值給a,最終a也為5。b=num2++;這是把num2++的值賦給b,因為自增運算子在變數的後面,所以先把num2賦值給b,b應該為8,然後num2自增加1變為 9。

那麼如果出現這樣的情況我們怎麼處理呢?

c=num1+++num2;

到底是c=(num1++)+num2;還是c=num1+(++num2);這要根據編譯器來決定,不同的編譯器可能有不同的結果。所以我們在以後的程式設計當中,應該儘量避免出現上面複雜的情況。

8樓:有錢買不起房子

如果表示式a是真 或者 表示式b和表示式c都是真,將執行後面語句。

||是邏輯運算子或 ,&&是邏輯運算子與

在c語言裡,0代表假,非0代表真。例如a=3,b=0,c=4,那麼a||b&&c 3||0&&4 將是1 是真

9樓:匿名使用者

a或b且c

因為「且」的優先順序比「或」的高,所以先判斷 b且c,然後結果跟a「或」

另外c語言中非零為真,0為假。

「或」 "且" "非" 這種邏輯運算具體怎麼算不用多說了吧……

10樓:匿名使用者

|| 和&&優先順序一樣,所以按照從左到右的順序來算

先算a||b 得出結果 與 c進行 &&計算

最後就可以得出結果了

c語言中 if(!a)b++是什麼意思?

11樓:文化廚子

先看if (a) b++;

上面的語句是將a的值與0進行比較,如果a不等於0,則條件為真,則執行b++,也就是說當a的值不等於0的時候才會執行b++。

再看if (!a) b++

在c++中!是邏輯否運算子,與上面的條件判斷正好相反,即如果a的值是0,則!a=1,則執行b++,也就是說當a的值等於0的時候才會執行b++。

12樓:天災

如果a的值為假,即0,那麼b的值加1.

麻煩採納,謝謝!

13樓:落帥

如果a是0,就對b自增1. 希望能幫到你。 大笨兔 :)

c語言中,if(a==b)和if(a=b)什麼區別?

14樓:匿名使用者

區別大了

if (a==b) 只要a和b 相等就為真

if (a=b) 是將b的值賦給a,再判斷最終的a, 所以只要b不為0 if (a=b)就使終為真.

15樓:匿名使用者

if語句如果沒有大括號 預設只有一個跟隨語句;

也就是說在你的第一個例子中,if語句成立 則t=a;會被執行,而a=b;b=t;什麼情況下都會被執行。

而第二個例子中加了大括號,被認為是一個整體,所以if的判斷條件成立與否決定了大括號裡面的所有語句的執行與否。

16樓:匿名使用者

條件語句後離他最近的一句是執行語句

無大括號,即t=a是if判真後執行語句,其他幾句並非if的執行語句,與if無關,也就是說不論if成立與否都執行。

有大括號表示一個整體,相當於一個大語句,都是滿足if條件後的執行語句,也就是說若if判真,則大括號中語句都執行,否則都不執行

17樓:匿名使用者

c語言中沒有連續不等式的寫法。if(a>b>c) 這種寫法程式不能正確執行。

if(a>b&&b>c) 是正確寫法。

18樓:幸福—飛揚

if (a==b) :表示如果a和b 相等就條件為真,即執行if後的語句

if (a=b) 是將b的值賦給a,再判斷最終的a, 所以只要b不為0 ,即a不為0, if (a=b)就始終為真.

19樓:匿名使用者

if(a==b) 是判斷 如果 a 等於b的話,,,條件成立進行下面的操作

if(a=b)則是錯誤的,,解釋為 如果 b賦值給a,只要b!=0條件就會成立的

20樓:

沒有大括號,if成立的話,就執行t=a;這條語句,然後執行a=b;b=t;

有大括號,if成立的話,則執行)這的內容。

21樓:伊伊不捨

你好,我認為是:if(a==b)是判斷語句,條件為真時就執行if的子句

if(a=b)是賦值語句,將b的值賦值給a

22樓:墮影幽篁

==是表示判斷

=是表示賦值

if(a=b)絕對是1(即為ture)

而if(a==b)只有在a與b相等才是1,否則是0.

23樓:

a==b是邏輯比較 當a與b相等的時候反回非0值 不等的時候返回0

a=b是賦值 返回b的結果

24樓:匿名使用者

a==b是a等於b

a=b是將b賦值給a

25樓:匿名使用者

==是條件運算子 =是賦值運算子,顯然兩者不一樣啊

26樓:匿名使用者

if(a==b)是邏輯比較

if(a=b)是錯誤,一般沒有這種寫法

C語言邏輯運算優先順序問題,C語言邏輯運算 優先順序問題?

d a b c 按照運算子優先順序先 在 所以先a b,在 ca 0所以a b的結果就已經出來了,為0,b就不用算,在然後在判斷 c,所以a 0,b 0,c 1,d 1 w x y z 中 y z優先順序高,他們的計算結果將與x在進行或運算,但x為1,所以這個或運算右邊的式子已經沒有算的必要了,他們...

邏輯運算中1,邏輯運算中

對頭,是這樣。邏輯運算中 表示邏輯加。是 或 的意思。1表示為真。舉例說,某人晚上家裡只要有人,就要開燈。那麼就可以表示為a開燈或b開燈。邏輯狀態就表示為 k a b 其中a或b任意一個為1,燈就開了。現a,b都在家,燈也就是開了這一種狀態啊。所以,1 1 1 所謂邏輯運算,就是平常我們生活中的一種...

C語言關於邏輯運算且b11b是多少

c語言使用非0代表邏輯真 返回邏輯真時使用1 0代表邏輯真。而 是邏輯與運算子,當兩邊同時為真時,結果才為真。1非0,代表邏輯真。因此 1 1 就是真 真,結果仍然為真。即上面的運算變成了b 真,即b 1 1 為真 那麼 1 1 就是真 就是1 那麼b 1 非 0 就為真 所以 1為真 c語言中 為...