国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

復合賦值運算符 += 到底怎么運算的?

2019-11-14 21:53:36
字體:
來源:轉載
供稿:網友
復合賦值運算符 += 到底怎么運算的?

本文轉載自:http://tanlan.blog.51cto.com/3450625/1575936

題目:

short s1 = 1; s1 = s1 + 1;

有什么錯?

short s1 = 1; s1 +=1;

有什么錯?

此題咋一看,這兩段代碼貌似沒有什么區別,但是它們的執行結果是不一樣的。結果是第一段代碼會出錯,第二段代碼不會出錯。第一段代碼的分析:這段代碼的第二句(s1=s1+1)就是簡單的兩個數字相加,結果賦值給第一個變量。此時運算結果的數據類型由以下規則依次決定:1,如果參與相加運算的表達式或數字有double類型,則結果是double類型2,如果參與相加運算的表達式或數字有float類型,則結果是float類型3,如果參與相加運算的表達式或數字有long類型,則結果是long類型4,如果參與相加運算的表達式或數字沒有以上3中數據類型,則結果是一律是int類型按照這個規則,s1=s1+1;那么最終的運算結果應該是int,所以賦值給short類型的s1會出錯。第二段代碼的分析:類似于 num1 += num2 這樣的形式的復合賦值表達式,,實際上等同于(num1的類型)(num1+num2),也就是將兩個數相加之后的結果強制轉型為賦值運算符左邊操作數的數據類型。唯一的不同點就是num1只會計算一次,所以理論上復合賦值運算符的效率更高。s1+=1;就會等同與 s1=(short)(s1+1);所以結果是沒問題的。

各位是否明白了這個規則呢?請看以下兩段代碼,您是否能正確的說出答案呢?下面的代碼輸出什么值?

short x = 3;x += 4.6;System.out.PRint(x);

下面的代碼有錯嗎?

int i = 5;long j = 8;i = i + j;i += j;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 剑阁县| 岳阳县| 思茅市| 大余县| 繁峙县| 恩平市| 浪卡子县| 南充市| 义乌市| 北票市| 彰化县| 衡阳县| 视频| 常州市| 嘉鱼县| 清远市| 竹山县| 瑞安市| 驻马店市| 光山县| 双辽市| 炉霍县| 镇原县| 南阳市| 平阳县| 德兴市| 江阴市| 永川市| 建德市| 若尔盖县| 嘉峪关市| 延寿县| 伊川县| 南投市| 松潘县| 阿鲁科尔沁旗| 松阳县| 沂南县| 元阳县| 玉林市| 宕昌县|