C语言中单目运算符的结合方向是,C语言运算符的结合性
滿意答案
dtexoy
2014.03.14
采納率:48%????等級:9
已幫助:113人
結(jié)合性是規(guī)定運算符與運算數(shù)組合成表達式的結(jié)合方向。因為運算符是有優(yōu)先級別的,表達式的運算應(yīng)該是先按運算符的優(yōu)先級由高到低的順序,結(jié)合運算數(shù)進行計算,當遇到同級別運算符或者是符號一樣但運算目數(shù)不同時,就要用到運算符的結(jié)合性。
例如:X=-B+C 或 X=A-B+C與X=A-B*C兩個表達式計算時是這樣的
對于X=-B+C,表達式運算時是這樣的,先數(shù)據(jù)棧讀入X,符號棧讀入=(賦值運算符),因為=是雙目運算符,還要讀入數(shù)據(jù),所以繼續(xù)向后讀表達式;又讀到-號,不是數(shù)據(jù),而且-號的運算級別高于=號,所以-號進入符號棧,繼續(xù)向后讀表達式,讀到數(shù)據(jù)B進入數(shù)據(jù)棧,這時候-B就符合負號運算符的自右向左結(jié)合的單目運算,就進行求值運算,符號棧中-號出棧,與數(shù)據(jù)棧中B結(jié)合成-B,-B就變?yōu)橐粋€新的運算數(shù)據(jù)進入數(shù)據(jù)棧;后面繼續(xù)讀入+號,它是雙目運算符后面還要讀入一個運算數(shù)據(jù),C就讀入了數(shù)據(jù)棧,后面沒有運算符再讀入,表達式結(jié)束,那么就進行符號棧+號和數(shù)據(jù)棧中C和-B的值相加,將結(jié)果存入數(shù)據(jù)棧中,符號棧中+出棧;符號棧中還有=號,它和數(shù)據(jù)棧中的結(jié)果與X形成賦值的自右向左雙目結(jié)合運算,表達式的結(jié)果就此運算完畢。
對于X=A-B+C與X=A-B*C兩個表達式計算時,前面X=A-B過程是相同的,只是后面,由于*號比+號的運算級別高,所以表達式X=A-B*C中要先算B*C的結(jié)果,在一步一步回退進行A-和X=的運算。而表達式X=A-B+C中+號與-同級別,所以當滿足運算條件時就先進行A-B運算,然后進行+C和X=的運算。
不知道以上的說明,是否能讓你明白C語言中運算符結(jié)合性和表達式求值的過程。
00分享舉報
總結(jié)
以上是生活随笔為你收集整理的C语言中单目运算符的结合方向是,C语言运算符的结合性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言 sizeof size_t,C/
- 下一篇: c语言保存图片image,iOS 保存图