int x 0,y 2,語句if x 0 y執行完畢後變數y的值是多少

時間 2021-10-17 05:03:01

1樓:匿名使用者

如果是if(x==0) y++;那麼執行完之後就等於2,但是題目中是一個等號。。。

所以if語句始終為真,所以y++會被執行的,於是y=3

2樓:匿名使用者

y的值還是2。。if語句內是一個賦值語句,賦值語句是x=0;執行x=0後,這個賦值語句的值等於0,所以if不成立,所以y++不執行,所以結果y的值沒有變

3樓:湘孺

(x=0)是賦值運算,不是判斷,如果是判斷應該用雙等號,因此if(x=0)相當於,x=0,if(x)兩步,因此答案y=2

4樓:我的銘兒折

#include

void main()

執行結果是:3.

5樓:蔡金桂

變數的什為2

因為在條件表示式裡將0賦值給了x,而這個if 語句就是判斷這個表示式是否為真(非0為真,0為假)

所以y++永遠也不會去執行

剛剛沒看清楚,呵呵

6樓:匿名使用者

2,=號是一個左值運算子

如果理解不了的話就想想a=b=c=3後為什麼a=3

7樓:

c語言中的判斷相等符號是==,“=”是賦值語句if(x=0)相當於把0賦給變數x,然後按照表示式(x=0)的值來進行判斷。

表示式x=0的值也是0,所以表示式相當於falsey++沒有執行,所以y的值應該是2

通常程式設計時為了防止出現誤將x==0類似的語句錯誤的寫為x=0這樣的賦值語句,通常程式設計時寫成

if(0==x),如果誤寫為if(0=x)則會在編譯的時候報錯,從而及早的發現錯誤。

8樓:匿名使用者

if(x=0)和if(x==0)是不一樣的;

if(x=0)括號內始終為假,y++沒有執行的機會;

9樓:匿名使用者

樓主,這個題目這樣來解讀。

if() 語句裡面,如果裡面的是非零的數,就表示為真,如果是0,就表示為假。現在,把0賦值給x,括號裡面的值為0,條件為假,不執行y++,所以,執行完畢 ,x=0,y=2

如果寫的是if(x==0) ,那麼條件為真,會執行下一句y++,所以,執行完畢,x=0;y=3.

顯然是第一種情況。 有可能作者想判斷x==0,卻寫成了賦值語句x=0所以好的編碼風格是我們講常數放在變數前面判斷,如果你寫成if(0==x),是對的,寫成了if(0=x),編譯器會報錯的。謝謝

10樓:南宮花葬月

y=2,如果是++y的話,則y=3

設x.y.t均為int型變數,則執行語句:x=y=3;t=++x||++y;後 y的值是多少

11樓:

||是符號或,優先順序是從左到右判斷。如果第一個語句為真則結果為真,不執行第二個語句直接跳出;如果第一個語句為假則執行第二個語句,當第二個語句為真時結果是真,為假時結果為假。因為x是3,++x就是4,所有非零的數字都是真,所以t的值直接為1,不執行++y,所以y還是最初賦值的3.

12樓:顓孫思蓮閻妞

4吧++y是,先把y的值+1,再使用...你給的**並沒有其它地方修改其值的

13樓:文維眭仙

x=y=3;首先3賦值給x和y,x=3;y=3然後t=++x||++y;這個語句要理解||這個的含義例如:a||b當a為真(不等於0為真)時,這個語句就成立了,不再考慮b的值,也不再處理後面的b

的表示式;所以,t=++x||++y;x=3時候,t=++x(就t=4);++y不用處理的~~

如果:a||b當a為假時候(等於0)就處理b的表示式!!

就這樣:x=3,y=3,t=4;

一道c語言:已有宣告"int x=0,y=2;",則執行語句"y=--x||++y;"後,變數y的值為

14樓:匿名使用者

int x=0,y=2;

y=--x||++y;

// 相當於是

--x;  // x = -1

++y;  // y = 3

y = x || y; //y = -1 || 3 = 1;  這裡是邏輯的或運算, 有一個非0就會為1

15樓:匿名使用者

y = --x || ++y; 僅執行前半部分的 y = --x,因為x的初值為0,執行--x後,x為-1,故y也是-1,此時邏輯表示式的值為真(非零),後半部分++y不再執行(短路效應,因為對於||表示式,前半部分為真就不再對後半部分求值,無論後面是真與假,都不影響邏輯結果),由此可知,y的值為-1。

16樓:

為2. 因為 --x 是 -1(真), || 短路, ++y 沒有得到機會執行

17樓:吾守護奇蹟

y=--x||++y;

按優先順序先計算 --x和 ++y;

--x 結果x = -1;

++y 結果y=3;

即y = -1 || 3;

所以y = 1;

18樓:崔鎖哈

答案是 1

#include

void main()

19樓:爬天梯的神

直接執行一下把y輸出就知道了

20樓:超越夢想一一飛

1這道是考你 c運算 優先順序

main() { int x=3,y=0,z=0; if(x=y+z) printf("****"); else printf("####"); } 的輸出結果是多少?

21樓:匿名使用者

main() 的輸出結果是多少?

if裡面的東西是x=y+z這個是先執行y+z然後賦給x然後判斷x的值真還專是假,這裡x會變成0是假的屬,所以執行的是第二句輸出好多#######

22樓:匿名使用者

此題目分析如下:

主要是if語句的判斷,x = y+z後,x為0,該條語句的結果也就是0,於是條件判斷失敗,執行else,所以結果為:####

23樓:匿名使用者

####

你的if裡面是x=y+z,是賦值而不是x是否等於y+z。

按你真正意思應該是 if(x==y+z) 吧?

24樓:匿名使用者

語句錯誤 if (x==y+z)才是條件 或者你可以加個迴圈 for(i=0,i<=3,i++) if(x==y+z)..................... .

執行以下語句後的輸出結果是int x 3,y 0 printfd,d1 x

printf d,d 1 x 10 1y 10 1x 10 1x 10 1x 10 1x 10 從左至右求解,1 x 結果是假,則值為0,所以 1 x 10 就變成 0 10,顯然是真,則值為1。用同樣的方法,求解。所以答案是 1,1 首先看第乙個結果 1 x 10 13 10 1 3 10按照運算...

已知x0,y0,且x 2 y 2 2 1,求x根號 1 y 2 的最大值

設x cos y 2sin 0 2x 1 y 2 cos 1 2 sin 2 cos 2 2 sin cos 2 1 2 1 2 1 2 0 2 0 2 1 cos 2 1 3 2 cos 2 1 2 1 2 0 cos 2 1 2 2 1 4或0 cos 2 1 2 2 9 4 0 cos 2 1...

y 2 3x 2 dy 2xydx 0在x 0,y 1下的特解

分組得 y 2dy 3x 2dy 2xydx 0注意到3x 2dy前面的3應該由y 3求導而來,故乘以y 2得 y 4dy 3x 2y 2dy 2xy 3dx 0,或 y 4dy d x 2y 3 0 通解為 y 5 5 x 2y 3 c 將x 0,y 1代入得 c 1 5 所求特解為 y 5 5x...