1樓:倒黴熊
&& 是需要左右兩邊都為真時,才是真。
x && y 也就是需要x和y為真,x&&y為真,當x為假時,編譯器已經能判斷出 x&&y為假了,不可能為真了,此時編譯器就不再往下判斷了,也就是說y代表的東西不再執行了。
所以m=a>b 由於 a=b=1 所以a>b為假,用int表示也就是0,所以m=0 為假
所以 n=c>b不再執行,所以n的值不變,所以 n=1
2樓:匿名使用者
&& 這個運算子有個特點,如果左側表示值為假,右邊的表示式就不執行了,左側為真才繼續執行右側表示式
a>b結果為假,m=a>b=0(0表示為假),這時左側表示式的值就是m的值,為0,表示假,右側就不執行了,n就是1
3樓:80晴天
根據優先順序順序這個表示式等價於(m=(a>b))&&(n=(c>b));
a>b不成立,所以為false,即0,則m = 0;
因為&&處理機制的原因,左邊表示式為假,則整個表示式為假,就不對右邊表示式進行計算了。
4樓:網曉強
先看第一個括號:> 優先於 = ;表示式 a > b 為假返回0,然後將 0 賦給 m ,故 m = 0;
同理:n = 0;
(m=a>b)&&(n=c>d)運算後
5樓:匿名使用者
因為a>b為假,所以m=0
當"&&"左邊為0時,電腦就不會再算右邊了,既n=c>d沒有被運算
所以n還是為2。
6樓:匿名使用者
邏輯與和邏輯或操作符總是先計算其左運算元,然後計算右運算元,只有在僅靠左運算元的值無法確定該邏輯表示式的結果時,才會求解其右運算元,就是所謂的「短路求值」
題中左邊為假所以不會計算右邊。
7樓:匿名使用者
只有第一個值是1的時候,第二個表示式才進行運算
8樓:匿名使用者
與操作 第一個操作符為假 後續操作無效
9樓:落憶浪子
m && n中,若m為假,則n不被執行;
m||n中,若m為真,則n不被執行。
多看點資料,對你的學習會有很大的幫助,所謂「見多識廣」就是見的多了自然知識比較豐富。
10樓:手機使用者
這麼簡單的問題,大哥!!!
好好學習吧.
樓上的回答完全正確.
我只為兩分.
11樓:匿名使用者
補充一下,(0 && 0)的結果是假,不是真。
在c語言中,a=(m=a>b)&&(n=c
12樓:天雲一號
a=(m=a>b)&&(n=c>d)表示將條件(m=a>b)與條件(n=c>d)進行邏輯與運算後,將結果賦值給變數a。
具體執行過程可以通過如下例項來說明:
int a=1, b=2, c=4, d=3;
int m, n;
a=(m=a>b)&&(n=c>d);
// 先計算(m=a>b),由於a>b為假,所以m=0;
// 再計算(n=c>d),由於c>d為真,所以n=1;
// 最後計算邏輯與,此時將m=0與n=1進行與運算,結果為0,之後將最終結果0賦值給變數a,所以經過a=(m=a>b)&&(n=c>d);運算後a=0
13樓:儀東澤
m=(a>b)為0這時候這個已經false了,後面就不用運算了,n還是2,m為0
14樓:匿名使用者
如果a>b,那麼m=1,否則m=0;
如果c<d,那麼n=1,否則n=0;
求出m,n後,再求m&&n,
如果m,n都等於1,則a=1,否則a=0.
15樓:匿名使用者
(m=n= =b)|| (n=c= =d)就是把(n=b)這個表示式的值(0或1)賦給m,然後(c=d)的值賦給n,
(注意,以上兩條式子是數學表示式而不是c語言**!)最後讓這兩個值邏輯或(不是位或!就是1||99仍然為1)
16樓:匿名使用者
這是個運算子優先順序的問題
==的優先順序大於=,這段**可以翻譯為
m=(n==b);
解釋為:如果n等於b,那麼m等於true(即1);否則m等於false(即0);
n=c==d也是這個意思
連線起來就是
如果m等於1或者n等於1,這個表示式的值為1,否則為0;
或者這樣解釋
如果n等於b或者c等於d,這個表示式的值為1,否則為0;
二者是一個意思。
17樓:匿名使用者
()&&() 中&&是邏輯運算子 是邏輯與 說白了就是&&兩邊的值都為真是 它的結果才為真(1) ;
m=a>b 的意識是 先比較a b的大小,如果a>b 則返回真(1)給m 相反這為假(0);
n=c>d同上
18樓:守豬の待兔
m= n==b n與b是否相等的判斷結果賦值給m
(n=c= =d) c與d是否相等的判斷結果賦值給n
最後m與n 或||一下... 得到最後的邏輯值
19樓:匿名使用者
先看括號裡的,括號中的優先順序要高,因為關係運算賦(<,>,<=,>=)的優先順序大於賦值運算子(=),所以先判斷關係表示式a>b和c>d的值,如果為真,值為1,如果為假,值為0,然後再把值分別賦給m和n,然後就是看&&(邏輯與)這個運算子了,如果m和n的值同時為1,則整個表示式的值為1,即真,如果有一個為0,則整個表示式的值為0,即假。
20樓:晨媽
我認為m=0 n=2
c語言a=(m=a>b)&&(n=c>d)+5的運算順序
21樓:匿名使用者
#include
int main()
下面這個程式中(m=a>b)&&(n=c
22樓:匿名使用者
(m=a>b)&&(n=c由於a>b,即5>6為假,bai所以dum=0,0&&任何值都為0,所以(n=czhi被短dao路,沒有進行運算,所以n仍然等版於原值2,故權輸出2.
&&和||,也稱為短路運算子,這個題目考察的就是這個功能0&&任意值=0,1||任意值=1,後面任意值的表示式都被短路掉,不進行運算。
(m=a>b)&&(n=c>d)
23樓:bruce於
n是false吧,邏輯與的第一部分判斷為false,第二部分就不會去判斷了,取預設值為false
24樓:朗月拂鳴
先將a的值賦給m,即m=1,而b=2,顯然m=a>b的值是0.由於是"與'運算,後面的式子可以不看,即不用執行了。整個表示式的值也為0.而n前後的值沒有變化,n=2
25樓:匿名使用者
&&並且判斷,先走左邊的m=a>b
=賦值,先走右邊的a>b
a>b嗎?不!所以a>b的值是0
m=0的值是0,賦值會用=左邊的值作為整個語句的值&&左邊0,不走右邊了,n=c>d沒執行
最後n=2
int a=1, b=2,c=3,d=4,m=2,n=2; 則執行表示式:(m=a>b)&&(n=c>d)後,n的值為?
26樓:匿名使用者
n=2,因為m=(a>b);
解釋為bai:如果a大於dub,那麼m等於true(即1);否則zhim等於false(即0);
n=c>d也是這個意思.
再有dao(m=a>b)&&(n=c>d)首判斷a>b是否為真,因為內a=1,b=2.所以a>b為假。m=0,接容著就不進行
n=c>d。故n的值未改變。估是因為&&的原因。
27樓:寒冰射手小樣
n的值仍然為2,沒有改變!
過程:先計算a>b,值為0,賦給m的值為0,表示式m=a>b的值也是版0。
對於&&邏輯運算,不管後面
權(n=c>d)的值如何,都不影響(m=a>b)&&(n=c>d)的最終結果,因此,c語言不再對表示式n=c>d進行計算。因而n的值沒有改變!!
28樓:詹爵雲蕙若
m=0n=2
a>b不成立m=0;
又因為(m=a>b)為0,所以不執行(n=c>d),即n的值不變。這是&&的特性。
c語言問題a表示式1,表示式2運算的過程如果是a(表示式1,表示式2)呢
在c語言中,多個表示式可以用逗號分開,其中用逗號分開的表示式的值分別結算,但整個表示式的值是最後一個表示式的值。所以,第一個的結果是表示式1,第二個的結果是表示式2 逗號表示式c 表示式1,表示式2 中,如果表示式1值為0,c的值是0還是表示式2的值?c語言提供一種特殊的運算子,逗號運算子,優先順序...
C語言 逗號表示式,c語言 逗號表示式
c b a a 1 b a b 根據運算子優先順序,等效於 c b a a 1 b a b 整體是逗號表示式,逗號表示式的值由最末項決定,即a b,前面的表示式沒有改變a和b的值,所以整個表示式的值是2 3,即5 intmain 結果 value 8 逗號表示式從左往右計算,但返回右邊的資料值作為表...
C語言程式設計求下面表示式的值,C語言 求表示式的值
這個太簡單了,你查一下優先順序,就知道了,古人云 授之以魚不如授之以漁。解題思路 首先你要明白運算 符優先順序的順序,其次你要明白型別之間的強制轉專換按照優先順序屬的順序首先計算 內的值,再強制轉換為int 也就是int 2.5 4.7 7 然後按運算子優先順序,先算乘除,因為是又目運算子所以由左級...