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語言中 為...