c語言運算子有關的問題

時間 2021-05-05 19:24:40

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 直...