自動型別轉換:低階向高階轉換
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...