表示式與型別問題

2021-08-21 22:40:31 字數 1180 閱讀 8189

自動型別轉換:低階向高階轉換

9. system.out.println('a'+7+''hello world!'')//輸出  104helloworld!

10.system.out.println("hello world"+'a'+7)//輸出 hello worlda7

上述表示式中 第二行**無法編譯成功,原因在於s 是short型別的變數,但是s-2 中的2為int型別,s-2表示式的型別就是int型別,s此時轉換為int型別了,而第6行**則是正確的,d的等級最高,double型別,因此該表示式型別是double型別,第8行的**也是正確的,intresult的值等於7,因為23/val不能整除,但是val是int型別,但表示式型別依然保持為int型別.

第9行中 'a'+7,首先'a'轉為int型別,然後和+7為104 當基本型別值104和string型別進行連線運算時,基本型別的值自動轉換為string型別,然後+連線運算子才起作用.

復合賦值運算子

short s=5;  s=s-2;   編譯錯誤,此時若要計算,可以使用復合賦值運算子 比如

short s=5; s -=2;  

不過,復合賦值運算子包含了乙個隱式的型別轉換:

a=a+5 ;  a+=5;  

a+=5 等價於 a=(a的型別)(a+5);因此,若結果的型別與該變數的型別相同,轉型不會有影響,但是若結果值的型別比該變數的型別要大,那麼復合賦值運算子將會執行一次強制性型別轉換,將會造成高位的"截斷"

表示式求值與字尾表示式

乙個算術表示式,含有數字 為簡化處理,數字只有一位 運算子 以及括號,求表示式的值。給出的表示式是一般我們見到的中綴表示式,即運算子位於運算元之間。如果把中綴表示式轉化為字尾表示式,那麼對字尾表示式求值將會很方便。字尾表示式特點 1.操作符位於運算元之後 2.沒有括號 3.運算子沒有優先順序。中綴表...

字首表示式 與 字尾表示式

在計算機程式設計中,我們使用字首或字尾表示式進行運算往往比中綴簡單 中綴表示式 1 2 3 4 5 字首表示式 1 2 3 4 5 字尾表示式 1 2 3 4 5 對於字首表示式 1 2 3 4 5,這裡的字首指的是運算符號字首,1 2 3 4 5 2 3 4 1 5可見連括號都省了。程式設計運算字...

表示式求值問題之表示式樹

include include include include define m 1005 define clr arr,now memset arr,now,sizeof arr using namespace std stackshu typedef struct node tire,t cha...