c語言復合運算
『壹』 c語言中有關復合運算符計算的問題
答案是98,不是56,分析如下
a+=a*=a/芹棗=a-6,展開如下
a=a+(a*=a/=a-6)
a=a+(a=a*(a/=a-6))
a=a+(a=a*(a=a/(a-6)))
a=a+(a=a*(a=a/1))
a=a+(a=a*(a=7))
a=a+(a=a*7) // 注意,此時a的值是7
a=a+(a=7*7)
a=a+(a=49)
a=a+49 //神啟 注意此時a的值游首如是49
a=49+49
a=98
『貳』 c語言的復合運算
表達式腔慶為:!(a+b)+c-1&&b+c/2
此題考察了運算符的優先順序,上面出現的運算符優先順序從高到低為(同一行為優先順序相等):
()
!
/
+ -
&&
知道運算符優先順序就好辦了,代入a,姿圓吵b,c的值:
!(3+4)+5-1&&4+5/2 註:(5/跡侍2=2)
= !7+5-1&&4+2 註:(!7=0)
= 0+5-1&&6
= 4&&6
= 1 註:(邏輯運算為真得1)
『叄』 c語言的復合運算
表達式為:!(a+b)+c-1&&b+c/2
此題考察了運算符的優先順序,上面出現的運算運賣符優先順序從高到低為(同一行為優先順序相等):
()
!
/
+
-
&&
知道運算符優先順序就好辦了旁纖逗,代入a,b,c的值:
!(3+4)+5-1&&4+5/2
註:(5/2=2)
=
!7+5-1&&4+2
註:(!7=0)
=
0+5-1&&6
=
4&&6
=
1
註:(邏輯豎好運算為真得1)
『肆』 在c語言中使用復合運算符計算a+=a*=a/=a-6,是怎麼計算的
從右往左算:
第一步:a = a/(a-6)
第派隱二步:a = a * a
第三步:a = a + a
例如:若a = 1, 則第一步後a=-0.2,第二步後a=0.04,第山絕三逗羨姿步後a=0.08
『伍』 c語言的復合賦值運算符
A=A+1,首先要求賦值號右側的表達式A的值,然後將它御游侍與1相加,接著求賦值號左側的表達式A的值,最後將加法的結果寫回A中,所以表達式A被求值了兩次;A+=1,首先求得賦值號左側的表達式A的值,將這個值加上1,然後寫回A中,表磨則達式A只被求值了一次。
這是理想的情況,實際中現代編譯器都非常智能,在開啟編譯優化時,A=A+1這樣的語句鎮吵將被直接優化為A+=1甚至是A++。
『陸』 怎麼讓這個C語言程序可以進行復合運算。比如,1+2*3/4-5的類型。謝謝!!!
進行復合運算,需要的改動很大,因為在邏輯上是完全不同的。
復合運算,你需要用一個字元串統一接收算式,然後通過字元串拆解的方法獲得運算符和數值,並判定運算數洞順序,比這基前個程序要復雜很多,採用的思薯鋒枯路也不一樣(可以說,這個代碼對復合運算沒有任何可用的意義)。
如果說這個程序的難度是1,那麼復合運算的難度至少是3,對於初學者,不適合這樣跳躍式的嘗試,建議你還是一步一步的學習吧。
『柒』 在C語言中復合賦值運算符有什麼樣的作用
在賦值運算符當中,還有一類C/C++獨有的復合賦值運算符。它們實際上是一種縮寫形式,使得對變數的改變更為簡潔。
Total=Total+3;
乍一看這行代碼,似乎有問題,這是不可能成立的。其實還是老樣子,'='是賦值不是等於。它的意思是本身的值加3,然後在賦值給本身。為了簡化慎跡芹,上面的代碼也可以寫成:
Total+=3;
復合賦值運算符有下列這些:符號寬畢 功能
+=加法賦值 =減法賦值 *=乘法賦值 /州廳=除法賦值 %=模運算賦值 左移賦值 ルAA
右移賦值 &=
位邏輯與賦值 位邏輯或賦值 =1
=位邏輯異或賦值
上面的十個復合賦值運算符中,後面五個我們到以後位運算時再說明。那麼看了上面的復合賦值運算符,有人就會問,到底Total=Total+3;與Tota
tal+=3;
有沒有區別? 答案是有的,對於A=
A=A+1
+1,表達式A被計算了兩次,對於復合運算符
A+=1
,表達式A僅計 算了一次。一般的來說,這種區別對於程序的運行沒有多大影響,但是當表達式作為函數的返回值時,函數就被調用了兩次(以後再說明),而且如果使用普通的賦值運算符,也會加大程序的開銷,使效率降低。
『捌』 C語言中,復合關系運算符怎麼算
double y=5.0;
int i=3,j=5,a=97,b;
float x=2.5;
y+=i-=j*=++x;這個是重最右邊往左邊算,=的運算方式
首先++x,得到x=3.5,j=j*x=5*3.5=17(因為鍵敗梁j是int型,小數點後面的舍棄)
然後i=i-j=3-17=-14;
最後y=y+i=5-14=-9;
b=a+=j%i:
同理:
先a=a+j%i=97+5%3=97+2=99
然後b=a;
(int)x/(int)y+y
先(int)x/(int)y=(int)2.5/(int)5.0=2/5=0;//整枯叢數除整數結果為整數
然後0+y,由於y為float型所以結果為float型5.0
a=(a+i, a+j) : 102 //逗號運算,取最後一稿運個式子的結果,,a=(100,102),所以a=102 (float)i/(++j) : 0.5 //(float)3/6=3.0/6=0.5,因為式子中有float所以結果為float
『玖』 C語言 復合的賦值運算
運算順序,從梁螞右至左。兄渣畝算符優先順序,四則運算高於賦值運算
所以求解步驟如下:
原來的表達式可以分解為如下形式:
b = a + a;
a -= b;
a += a;
所以可以輕易的看出整個表達式的值應該是a的初始值乘以-2,即羨森最終結果
『拾』 C語言中的復合賦值運算符「%=」怎麼用
要點1: *=,+=,-=,%= 等符號的應用是同道理的: 即把左邊的移過右邊運算(右邊用括弧包住,表示先運算),結灶簡棗果再給左邊(注意左邊只能是變數,不可為表達式)A += B 等價於A = A + (B); (B可以是值或表達式,這里的=仍是賦值號哦,B打括弧是因為它可以是表達式) 如 x += 1; ===== x= x+1; x += 1+2+3; ===== x =x+(1+2+3); x += a+b+1 ==== x= x+(a+b+1); 要點2:就個這樣的符號的運算,則從最右邊的那個開始計算,一直到左邊例如: A += B %= A -= B--------------3------2----1 (3個這樣的符號)從*最右邊*來分析(按符號順序): 1: A=A-(B) ,得到隱拆了A的新值 2:B = B%(A), 得到咐伏了B的新值 (注意該A是新值哦) 3: A=A+(B), 再次得到了A的新值 (注意右邊的A也是1的新值,B是2的新值) 懂了上面,你應該可以分析自己的了~~~