C 的問題 int a 1,b 2則ab 的值怎麼算出來?我執行了一下,結果是

2021-05-04 01:10:04 字數 4439 閱讀 3213

1樓:手機使用者

在這個表示式中,三目運算子的執行順序是從左往右的但整個表示式的執行順序是從右向左執行的

初始值a=1,b=2,c=3,d=4

先執行--a和--d,得到a=0,d=3

再判斷c

所以表示式c

此時a的值是0

則原表示式簡化為 a++

對於a++

最終的運算結果是1

希望回答對你有幫助!

2樓:

執行過程如下:

1: a/b=0

2: ++a/b=1

3: (++a/b)*b=2因為--是字尾運算子,輸出時,並沒有執行,所以輸出2對於 這個表示式輸出之後變成1

3樓:

(++a/)*b--

改為(++a)*b--

=2*2=4

4樓:匿名使用者

++a先自增後使用a=2

++a/b=2/2=1

b--先使用後自減1

(++a/b)*b--=1*2=2

然後b=1

5樓:

(++a/)*b-- 這能算?

6樓:

++a=2

b--=1

a/b=2

2/1=2

假設int a=1,b=2;則表示式(++a/b)*b--的值是多少?答案是2,但是我不明白~~~

7樓:匿名使用者

(++a/b)*b--;//小括號裡抄面的優先bai級最高先du執zhi行++a/b,左++優先順序比/高,所以dao先執行++,所以小括號的執行結果是((1+1)/2)=1;

//k=1*b--;//先執行乘法賦值給k再右減,所以如果你的表示式左值應該是2(即k值)

k=(++a/b)*b--;

8樓:蒼老師的大姨夫

運算子是有優先順序的,本題中()的優先順序最高,++,--次之,*,/最低。執行回

時,先執行()裡面的內容++a/b,意思是答(a+1)/b=1,b--的意思是先計算再自減,b--等於2,之後b=b-1,所以(++a/b)*b--的結果是2

9樓:吶傷誰聆聽

這道題要看copy++i 和i++的區

別,一個是先加後用,一個是先用後加。

這道題裡++a是先加後用,b--是先用後減所以括號裡 a先加得2 2/2=1b--先用 1*b=2 然後再減減 此時b=1 不過後面沒用到它

10樓:匿名使用者

(++a / b) * b--

此處 () 優先順序最高du

,所以zhi先計算dao(++a / b)++a的值為2,b值為2,所以(++a / b) 的值為1然後是計算1 * b--

b--是中的 -- 符號回是後加減,就是說第一次運算不答減只有第二次運算該變數才執行減一操作

所以1 * b-- 等於1 * 2 等於 2

11樓:jyw金

回答:++a/b a要先自增後在除以b ;(1)*b-- 是b要先乘以1後在自減

12樓:匿名使用者

優先順序問抄題,真正的程式中一定要儘量避免這種可讀性差且宜出錯的**這個表示式分解如下

a=a+1; //a=2

a=a/b; //a=1

a=a*b; //a=2

b=b-1; //b=1 這一句是這個表示式結束後的事情了,所以表示式的值是2

13樓:匿名使用者

(++a/b)*b = (2/b)*b = (1)*b = 2;

14樓:匿名使用者

a/b 0

++a/b ++0 1

(++a/b)*b 1*b 1*2 2

設:int a=1,b=2;則表示式(++a==b--)?--a:++b的值為1。

15樓:匿名使用者

第一題 對,第二bai題 錯;

分析如下

第一du題

++a先執行

加後使用

zhia值 a++先使用a的值再

dao執回行加;減類似分析

(++a==b--)?--a:++b執行順答序為從左到右先執行++a 所以此時a=2,再與b比較,比較後,b自減,為1;

所以a=b=2為真返回 條件語句的前面部分,由於是--a,所以返回為1(若為a--則返回為2),所以是對的

第二題:

執行b=(float)a/2+0.5賦值語句後,a 的值不會發生任何改變,執行那個語句時,會對a進行復制的,原來的那個值不會改變

16樓:匿名使用者

1. ++x較之於x--先進行來自運算自,所以1對。

2. 明顯錯誤。我除錯了一下,因為這東西也不是特別注意。

b=(float)a/2+0.5;

printf("%d ,%d \n",a,b);

只有這種格式可以輸出,當你有一個為%f試圖以浮點輸出時,甚至導致記憶體報錯,看來這是個嚴重的問題,我想是這樣的,a,b的地址空間是相鄰的,當以浮點輸出時讀取四個位元組,導致了越界了。結果可想而知,你的問題也就不言自明瞭。

除錯是最好的解決辦法,要學會研究。

已知a=1,b=2,c=3,則表示式a*b&&(b++,!c)&&(a++,c++)的值是。該表示式運算過後,a=? ,b=? ,c=? 5

17樓:聽不清啊

該表示式運算過後,a=1 ,b=3 ,c=3因為 1*2的值非0,被認為是「真」

&&後面繼續計算:b++,!c

是一個逗號表示式,b變成了3,!c的值為0(因為c原值為非0,即「真」,取反後即為「假」),所以逗號表示式的值為「假」。

整個表示式的值已經確定,為「假」,後面總分不再運算。

所以,a=1 ,b=3 ,c=3

18樓:匿名使用者

首先得知道&&進行的是短路運算,如果運算子的左邊經計算後結果為假,則不會再計算右邊。

因a*b=2為真,接著計算(b++,!c),而(b++,!c)是一個逗號表示式,逗號表示式按從左往右計算,整個表示式的結果為最右邊那個表示式的結果。

所以,(b++,!c)經計算後為(2,0),逗號表示式的值是0,同時b為3,而已為假,不會再計算(a++,c++),因此,結果是表示式a*b&&(b++,!

c)&&(a++,c++)的值是0,該表示式運算過後,a=1,b=3,c=3。

19樓:三天打魚

看結果就知道了 執行了第一個括號之後就返回了 後面的括號沒有執行

第一個括號最後一個值是!c c邏輯取反運算 c是3 取反後是0 然後逗號表示式返回最後一個值 返回了0  前面的&&遇到0就直接返回結果了

20樓:

根據運算子的優先順序,表示式等價於

(++a) || (-b) && (++c)在c/c++中 0為false,非0就是true,上面的表示式就等於true || true && true

所以最終的值就是true,如果按照整數輸出,則為1

int a=1,b=2,c=3;執行語句a+=b*=c;後a的值是

21樓:匿名使用者

最後baia=7

首先你要了解計算機語du言,x+=y,翻譯就是x=x+y,其他zhi運算子號dao

一樣。而且運算時是專從後運屬算過來的,那麼上面意思就是:

b*=c 就是 b=b*c(此時b的值已經改變)a+=b 就是a=a+b

c++已知a=1,b=2.c=3 ,則表示式++a||-b&&++c 的值是()這個道題怎麼做

22樓:匿名使用者

根據運算子的優先順序,表示式等價於

(++a) || (-b) && (++c)在c/c++中 0為false,非0就是true,上面的表示式就等於true || true && true

所以最終的值就是true,如果按照整數輸出,則為1

23樓:匿名使用者

簡單你只要知道在c語言中0代表偽,非0代表真

把值代進去就可以了

結果為真(1)

24樓:匿名使用者

值吱吱吱自治組織組織重中之重這孩子=(1)

已知inta1,b2表示式abab的值是

這個事c語言中的條件選擇結構 其意義是 若a 已知inta 1,b 2 表示式 a b a b 2 4的值,表示式 a b 的值?求詳細 a b a b 2 4 按運算子優來 先律和結合律,可寫為自 a b a b 2 4 由於 int a 1,b 2 所以bai a b 1 2 3 0.0 a 1...

int a 1,b 2,c 2,t while abct a a b b t cprintfd,d,d n ,a,b,c 為什麼輸出的是1,

首先看a再把a!第一次迴圈a版為1,然後1環的條件權成立 那麼執行迴圈體後a 2,b 1,c 1 第二次迴圈a 第三次迴圈a abai是1,1也為 true c 2 du所以第一次 zhiwhile的值為dao1,執行 之後內,a 2,b 1,c 1,繼續進行while判斷a容while的值也為1,...

在c語言中若有定義inta5b2c1則表示式

include include char st 110 int main int a 5,b 2,c 1 printf d n a b 表示式為假,輸內出容0 先計算 a b 然後計算b c 即 2 1 不成立,值為假。兩側都是假。結果為假。即0.a b b c 也不滿足,所以表示式a b 結果是f...