1樓:匿名使用者
這個地方不是"運算順序"的問題,c語言語法里根本沒有規定求值順序,有的只是運算子的優先順序和結合性
由運算子優先順序和結合性可知,以上表示式分別等效於
1.d=((m=(a!=b))&&(n=(b>c)))
2. x=(((y--)<=x)||((x+y)!=z))
3. ((x++)-y)+(++y)
4. ((x(y+x))?(5):((25>y++)?('1'):('2'))
然後代入初值可知,表示式值
1.沒有初值,無法判斷
2.整體表示式值為1,且最終x值為1,y值-5,z值為5
3.整體表示式值無解,因為此處涉及求值順序問題,這是一個未定義行為,且最終x值為4,y值-3,z值為5
4.整體表示式值為0,且最終x值為1,y值2,z值為4
5.依舊是未定義行為,表示式整體值無解,且此處求值順序涉及判斷分支,故,變數x和y的最終值也是無解的
關於求值順序的問題可參見裘宗燕的"c/c++ 語言中的表示式求值"
2樓:匿名使用者
去網上查一下運算子優先順序表,按優先順序和結合性去處理這些題,自己多練習就會了。
d=(m=a!=b)&&(n=b>c)
有括號,先算括號內的
算完兩個括號內的,要算&&
結果賦值給d
m=a!=b 先算a!=b,結果賦值給mn=b>c 先算b>c,結果賦值給n
3樓:流雲更迭
建議不要糾結這個了,程式設計的時候也不要寫這樣的表示式,用括號來清晰表明自己的意圖。
C語言邏輯運算子問題,c語言邏輯運算子 我不明白 和 到底是怎麼運算的
c表示式中的操作符按優先順序順序結合,本表示式中運算子的優先順序順序從高到低為 所以表示式計算分解為 temp1 year 4 temp2 year 100 te year 400 temp4 temp1 0 temp5 temp2 0 temp6 te 0 temp7 temp5 temp6 ex...
c語言自增運算子問題
肯定不一樣的,運算子很簡單,a 和 a首先將他看成一個賦值表示式a 是a a 1,當a初始值為0的時候a會等於1。但是a 和 a的區別是a 整個表示式的值是從0開始而 a是先做自加運算再賦值其整個表示式 a的值為1 不一樣,a 叫後置自加,a叫前置自加.區別就是a 是先運算後自加,另一個是先自加,後...
c語言中運算子是取整運算子嗎,C語言中“ ”運算子是取整運算子嗎?
終極至尊粉 printf f,f 10.0 3,10.0 3 雙目運算具有左結合性。參與運算量均為整型時,結果也為整型,捨去小數。如果運算量中有一個是實型,則結果為雙精度實型。printf d,d 10 3,10 3 printf f,f 10.0 3,10.0 3 c語言有以下幾種取整方法 1 直...