設有變數定義「intx 1,y 2,z 3計算下列表示式的值

2021-08-27 07:46:09 字數 4381 閱讀 5115

1樓:曉晨之巔

1)這個是要求什麼表示式的值呢?後面的除2(/2)完全沒有作用啊,執行後x=2,因為x是整型;若是x=((float)(y)+0.5)/2,執行後x=1;

2)逗號(,)運算子求職順序為自左至右,所以,執行--x,y++後x=0,y=3,z=3,然後求得最右邊x+y+z=6並將此結果賦給z;

3)等號(=)運算子結合方向為自右至左,所以,先有y=z=3,然後x=y=3;

4)z=1是賦值運算,賦值成功,返回為1,所以x*=y-1;x=1,y=2,z=1;

5)y++引用y=2後y=3,--z是z自減為2後引用,所以,x=4,y=3,z=2;

6)z/=2後z=1,然後化為x=x%(z=1),與4)類似,x=x%1=0,y=2,z=1。

2樓:

1)(x=(float)(y)+0.5)/2 1

2) z=(- -x,y++,x+y+z) 6 括號運算,值為最後一個代數式的值 --x ,x=0,y++ ,y=3 ,x+y+z=6

3) x=y=z 3 賦值運算,從右向左,x=3,y=3,z=3

4) x*=y-(z=1) 2 z=1 假為0, x*=2-0 x=2

5) x=(y++)+(--z) 4 x=2+2=4

6) x%=(z/=2) 0 z/=2 z=1,x=x%1=0

3樓:匿名使用者

1)首先和語言有關:假設你是c或c++;

2)然後考察的是型別轉換:顯然二樓對第一個答案1.250000是不對的;

3)之後是考察編譯器:這個比較麻煩第二題就是依賴編譯器,優化編譯器,那麼可能3個值同時先賦值後計算,即(--1,2++,1+2+3),不優化就會預設從左往右。二樓的6可能有很多種解釋。

4)考察運算子優先順序:這個是基礎,不解釋

4樓:匿名使用者

1)12)6

3)34)1

5)46)0

有不明白的可以繼續追問

5樓:

都是很簡單的,只要先注意 ++前置的先算了

6樓:傻★傻の莪

1. 1.250000

2. 6

3. 3

4 .2

5. 4

6. 0

7樓:匿名使用者

1算術表示式有問題?3140

8樓:匿名使用者

這個要看是哪種c語言,是向左算還是向右算

設int型變數x = 1 , y = 2 , z = 3,則表示式 y+=z--/++x 的值是

9樓:柴妙鬆傅震

是3表示式為y=y+z--/++x;

先計算z--為3

在計算++x為2

然後計算z--/++x

這時候z--值為2所以z--/++x為1

在加y最終結果是3

c語言,設有說明語句int x=1,y=2; 則執行表示式x=y= =3後,變數x的值為? 。 5

10樓:卡婭茨

#include

int main()

先計算y==3,這個式子的值為0,因為y不等於3,為假,然後x=0。

假設有條件 int x=1,y=2,z=3;則表示式z+=x>y?++x:++y的值是6,為什麼是6呢?

11樓:墨汁諾

先判斷後面的條件,因為x大於y不成立,所以返回++y也就是3,再加到z裡所以是6。

或結果是6

因為+=運算子的優先順序低於後面的運算,

所以先求後面表示式的值,可得結果為3

接著,z+=3可得z=6

12樓:匿名使用者

你好 ,比目運算子(?:) 和》 的優先順序都比 += 高。

所以上式可以這樣看 z = z + (x>y?++x:++y)z = z + (++y) = 3 + (2+1) = 6請採納,有問題可追問。

若int x=1,y=2,z=3;表示式z+=x+y?++x:++y的值是_____。

13樓:匿名使用者

答案是5.

+=後面是一個三目運算子。

先求?前面的表示式,若表示式的值是0,則取:後面的值,非0取:前面的值,而自加運算子的用法是:

++x:先自增1在使用;

x++:先使用在自增1;

所以x+y?++x:++y的值是2;

z+=2相當於z=z+2=5.

14樓:冰糖也是糖

感覺這個表示式應該是這樣 z += (x + y)?++x:++y)首先由於三元運算子的優先順序比較低,因此先要計算括號裡面的加法運算對於三元運算子(x+y)?

++x:++y,由於x+y>0因此條件成立,計算++x

那麼整個表示式的值就是++x值,也就是2,同時x進行了累加,變成了2那個原來的表示式就變成了z += x,由於x為2,則最後表示式的結果為5

int x=1,y=2,z=3;則表示式z+=x>y?++x:++y的值是?

15樓:姚令怡周義

答案是5.

+=後面是一個三目運算子。

先求?前面的表示式,若表示式的值是0,則取:後面的值,非0取:前面的值,而自加運算子的用法是:

++x:先自增1在使用;

x++:先使用在自增1;

所以x+y?++x:++y的值是2;

z+=2相當於z=z+2=5.

16樓:計好樂智

結果是6

因為+=運算子的優先順序低於後面的運算,

所以先求後面表示式的值,可得結果為3

接著,z+=3可得z=6

17樓:鈕亦玉銀茂

【分析】

z+=x>y?++x:++y

該表示式執行分為兩個過程:

1).x>y?++x:++y

這個表示式的運算子為

a?b:c,即根據邏輯表示式a的真假情況返回表示式b或c.

若a為真(即a運算結果非0),則返回表示式c;若為0,則返回表示式c.

因此x>y++x:++y的意思是判斷x>y的真假,若為真,則返回表示式++x,若為假,則返回++y.

2).執行z+=

【執行過程】

表示式z+=x>y?++x:++y等價於z=z+(x>y?++x:++y).變數賦值後即為z=3+(1>2?++1:++2),

1)由於1>2為假(即表示式結果為0),因此返回表示式++y;

2)執行++y.++y是先對y變數執行自加,在返回自加後結果,即為3(即為(x>y?++x:++y)的結果).

3)執行z+=.將(x>y?++x:++y)結果帶入,為z+=3

4)返回z為6

.——————————————————————————————————

樓主,這些都是c的基本運算,要紮實c功底啊

18樓:蔡思真掌媛

值是6程式先判斷想x,y值大小,之後取y值並自加,賦值給z自加

經過以下語句定義後,表示式z+=x>y?++x:++y的值是( )intx=1,y=2,z=3;

19樓:匿名使用者

結果是來6

z+=x>y?++x:++y的意思是

z=z+x>y?++x;++y

因為x>y為假, 所以x>y?++x;++y這個運自算出來是bai++y, 那麼式子就成了

z=z+++y 而++運算子是du先自增然後才執行zhi下一條語句dao, 那麼y就先辦成3,然後才會和z相加的

這樣就計算出來了z=3+3

20樓:匿名使用者

給你改編一下應該好理解int ntemp;if (x>y) ntemp = ++x;(先加1再賦值)else ntemp = ++y; z = z + ntemp;

21樓:匿名使用者

z的值是6,你要的是結果?

22樓:匿名使用者

寫的不是很清楚看起來應該是三目運算 前面是z+=x>y? 後面是++x:++y;如果z+x>y 則取++x;否則取後者 取後者 加1後 x=2;

JAVA問題 int x 1,y 2,z 3則語句y zx的值是

x 2,y 3,z 2 月亮望見了copy 小魚的結果正確,過bai程分析不對。woniu157的結果就du錯了。都是因為 和zhi 這兩個運算dao 符。遞增和遞減運算子出現在變數的前面和後面時優先順序是不一樣的。出現在變數前時,優先順序最高要先算遞增 遞減的值,再參與其他運算子號的操作。出現在變...

設有宣告int x 1,y 2,z 3下面表示式的值為0的有()A x《z B z》2 C y y D x yE z y x為什麼

完整bai的是bcde b 右移2位,du相當於除以4,3 4 因為是zhiint型別的,所dao以等於0 c 異或操作 y y 相同專等屬於0d 1 2 等於0 10 01 00e 1 2 3 等於0 00 1100 應該是d e a左移2,相對於 1 2,b右移2,相對於3 2,c異或時還是y ...

定義 int x 3,y 4,z 5則表示式 x y z 1 y z

c語言的優先順序 從上到下依次遞減 醋 初等,4個 指向結構體成員 結構體成員 壇 單目,9個 負號 型別 指標 取地址 sizeof長度 酸 算術,5個 減味 位移,2個 灌 關係,6個 等於 不等於 味 位邏,3個 按位與 按位異或 按位或 落 邏輯,2個 邏輯與 邏輯或 跳 條件,1個,三目 ...