關於複合賦值運算的問題 C

2025-07-10 13:45:09 字數 1992 閱讀 1696

1樓:匿名使用者

a+=a-=a*a 等價於 a=a+(a=a-a*a) 為什麼?這個氏如亮問橡攔題是複合運算的縮寫,其實是:a=a+(a=a-a*a) 的簡寫,這是因為一些複合運算子的書寫規定:

比如:a=+b; 相當於:a=a+b ; 在上式中,b具體是殲寬乙個賦值表示式,其中 b 中有複合運算 a=a-a*a所以,這個式子 a+=a-=a*a 等價於 a=a+(a=a-a*a)如果a=5,則:

a+=a-=a*a 等價於 a=a+(a=a-a*a)先算括號內的,a=a-a*a 即 a=5-5*5=-20 ,此時,a=-20在算括號外的:a=a+a 即 a=(-20)+(20)= 40其實,我們可以自己編寫**到編譯器上去試驗一下我們分析得對不對:如下:

可以看到這兩種都是等價的,而且結果都是-40;

2樓:匿名使用者

a+=x等價與a=a+x所以a+=a-=a*a就等價於a=a+(a-=a*a)a-=x等價與a=a-x所以,又有a=a+(a-=a*a)等價於a=a+(a=a-a*a)a=5時先算括號,括號裡先算乘法,燃塌再算減法,最後者段皮將減法結果賦值給aa*a=25a-a*a=-20a=a-a*a=-20括號算完算a+()a+a=-20+(-20)=-40所以首差最後a=-40

複合賦值運算子

3樓:網友

在賦值運算子當中,還有一類c/c++獨有的複合賦值運算子。它們實際上是一種。

縮寫形式,使得對變數的改變更為簡潔。

total=total+3;

乍一看這行**,似乎有問題,這是不可能成立的。其實還是老樣子,'=是賦。

值不是等於。它的意思是本身的值加3,然後在賦值給本身。為了簡化,上面的。

**也可以寫成:

total+=3;

複合賦值運算子有下列這些:

符號 功能。

加法賦值。

減法賦值。

乘法賦值。

除法賦值。

模運算賦值。

=左移賦值。

=右移賦值。

位邏輯與賦值。

位邏輯或賦值。

位邏輯異或賦值。

上面的十個複合賦值運算子中,後面五個我們到以後位運算時再說明。

那麼看了上面的複合賦值運算子,有人就會問,到底total=total+3;與total+

3;有沒有區別?答案是有的,對於a=a+1,表示式a被計算了兩次,對於複合運。

算符a+=1,表示式a僅計算了一次。一般的來說,這種區別對於程式的執行沒有。

多大影響,但是當表示式作為函式的返回值時,函式就被呼叫了兩次(以後再說。

明),而且如果使用普通的賦值運算子,也會加大程式的開銷,使效率降低。

關於複合賦值運算的新手問題

4樓:網友

先算a/=a-6,9-6=3,a被賦值9/3=3

接下來a*=a,也就是a=a*a,注意a已經改變為3了,所以a被賦值為9

最後a+=a,也就是a=a+a,此時a被賦值為9+9=18

c語言(複合賦值表示式)問題

5樓:匿名使用者

題目的意思是:如果a=b=6,進過a*=b+=2運算後,得到b=8,a=48 程式採用自右向左進行計算,步驟如下:1、 b+=2 相當於b=b+2 此時a=6 b=82、 a*=b 相當於a=a*b 此時a=48 b=8 經過運算完了,結果就是:

a=48 b=8

6樓:匿名使用者

右結合,從右邊開始計算。

b+=2就是b=b+2所以b=8

a*=b就是a=a*9所以a=6*8=48

7樓:匿名使用者

這個很簡單啊。從右邊算起,首先是a=b=6,意思是先6賦給b,再將b的值賦給a,結果就是a=6;b=6;再乙個就是a=a*(b=b+2), 先算b , b=b+2,所以b的值為8了,接著算a,此時a=a*b;就是6*8=48;

在c語言中複合的賦值運算子怎麼處理

x x x x 你要正確拆開這個式子很重要 首先是 x x x 然後是 x 36 繼續 x x 36 x 30 x 30 x 30 30 60 c語言的這個運算應該從右向左賦值。對,頂樓說的對 把x 6代入公式,然後從右向左算。要點1 等符號的應用是同道理的 即把左邊的移過右邊運算 右邊用括號包住,...

C三目運算子問題關於c三目運算子的問題

三目運算就是下面這算式了 a a a z a 32 a它的意思是 a代表的字元在小寫字母 a 和 z 之間嗎?如果是,運算結果是a 32 如果不是,結果是a 這段程式應該是字母大小寫轉換,但有點問題。如果是想把小寫轉成大寫,後面應該是 a 32 如果是想把大寫轉成小寫,引號裡應該是大寫字母a和z 語...

c語言關於運算子的問題

在前九先執行j後在加,比方j 1 1 j 則先是1 j,當然1 j 2了,然後是執行j 這時j 2了,如果是1 j j的話,結果就改是1 1 2 4了,你推敲下是不是這樣 int m,j 5,t t j j j j 6 6 8 8 這裡我用vs2005編譯的是28,9,和你的26,9部一樣,這個可能...