表示式計算易錯題

2022-02-16 15:27:28 字數 1265 閱讀 5074

1.設整型變數m,n,a,b,c,d均為1,執行「( m=a>b)&&(n=a>b)」後m,n的值是( )

①0,0      ②0,1    ③1,0 ④1 ,1

「解」表示式(m=a >b)&&(n=a >b)是乙個邏輯表示式,它的計算過程是先計算邏輯與的左分量(m=a>b,其中又是先計算a>b.因a>b不成立,結果為0,將0賦給變數m,最後邏輯與的左分量結果為0.由於邏輯運算採用特別的優化計算規則,當邏輯與的左分量結果為0時,不再計算邏輯與的右分量,而直接以0為邏輯與的結果。所以,上述表示式計算使m的值變為0,而n的值沒有變,依舊為l.所以解答是②。

『錯誤原因』沒注意邏輯運算採用的是優化計算規則。在邏輯與中如果左分量為0時,將不再計算邏輯與的右分量

2.設整型變數i的值為3,則計算表示式i—s—i後表示式的值為()

①0 ②1 ③2 ④表示式出錯

「解」有些運算子只有乙個字元,也有許多運算子由兩個字元組成。特別是有些字元既可是單個字元的運算子,又能組成雙字元的運算子。編譯系統在識別源程式時,通常是盡量多地讀八字元,能組成多字元單詞的先盡量組成多字元單詞。所以表示式i——i,被編譯器理解為(i——)-i.另外,當表示式中某變數有字尾自增和自減運算時,先按變數的原值計算表示式,然後再對變數進行自增和自減運算。同樣地,當表示式中某變數有字首自增和自減運算時,先對變數進行自增和自減運算,然後再按變數的新值計算表示式。按這個約定,求表示式(i——)-i是計算i-i的值為0,然後再對i作自減運算。這樣,表示式(i——)-i的值為0.所以解答是①。

『錯誤原因』不清楚編譯系統的這種處理方式:編譯系統在識別源程式時,通常是盡量多地讀八字元,能組成多字元單詞的先盡量組成多字元單詞。所以表示式i——i,被編譯器理解為(i——)-i

3.若已定義 x和 y為double型別,則表示式: x=l, y=x+3/2結果是( )

①l ②2 ③2.0 ④2.5

「解」由於變數x和y都是double型別,表示式 x=l, y=x+3/2是先計算 x=1,由於 1是整型的,x是double型別的,該計算先將整數1轉換成double型別的1.0,並將1.0賦給變數x.計算 y=x+3/2是先求 3/2的值,因是兩整數相除,結果是整型值 1,然後在計算 x+1時,也先將 1轉換成 1.0,然後求得 x+l的值為2.0,最後將該值賦給變數 y,並得到整個表示式的值為2.0.所以解答是③。

『錯誤原因』認為x和y均為double型別 則表示式y=x+3/2中3/2等於1.5 .應制定 3和2均為整數則相除時為整數結果1

表示式計算

棧的應用舉例 棧在表示式計算過程中的應用 建立運算元棧和運算子棧。運算子有優先順序。規則 自左至右掃瞄表示式,凡是遇到運算元一律進運算元棧。當遇到運算子時,如果它的優先順序比運算子棧棧頂元素的優先順序高就進棧。反之,取出棧頂運算子和運算元棧棧頂的連續兩個運算元進行運算,並將結果存入運算元棧,然後繼續...

表示式計算

表示式計算對於我們人來說,喜歡通過中綴表示式來計算,而計算機則不一樣,需要通過字尾表示式來計算,首先通過例項來介紹一下中綴表示式和字尾表示式 例子 中綴表示式 3 5 2 3 6 字尾表示式 3 5 2 3 6 那麼轉換規則是怎麼樣的呢?規則 從左到右遍歷中綴表示式的每個數字和符號,若是數字就輸出,...

表示式計算

表示式計算 時間限制 1.0s 記憶體限制 256.0mb 問題描述 輸入乙個只包含加減乖除和括號的合法表示式,求表示式的值。其中除表示整除。輸入格式 輸入一行,包含乙個表示式。輸出格式 輸出這個表示式的值。樣例輸入 1 2 3 4 5 樣例輸出 4資料規模和約定 表示式長度不超過100,表示式運算...