第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

不一致的“從 int 到 byte 的可能有損轉(zhuǎn)換”編譯時錯誤

不一致的“從 int 到 byte 的可能有損轉(zhuǎn)換”編譯時錯誤

慕婉清6462132 2022-11-30 13:44:45
檢查以下代碼片段:片段 #1int a=20;int b=30;byte c= (a>b)? 20:30;Error:incompatible types: possible lossy conversion from int to bytebyte c= (a>b)? 20:30;片段 #2int a=20;int b=30;byte h1=70;byte c= (a>b)? 20:h1;片段 #3int a=20;int b=30;byte h1=70;byte h2=89;byte c= (a>b)? h1:h2;片段 #4byte c= (true)? 20:30;除了 Snippet #1 之外,所有這些都可以正常編譯。這種行為如何合理化?如果代碼段 #1 產(chǎn)生“可能的有損轉(zhuǎn)換”錯誤,則代碼段 #2 和 4 也應該如此,因為它們?nèi)匀话?type 的文字int。他們?yōu)槭裁淳幾g成功?
查看完整描述

2 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經(jīng)驗 獲得超6個贊

JLS 15.25。解釋了這種行為。

片段#1:

如果第二個和第三個操作數(shù)具有相同的類型(可能是空類型),那么這就是條件表達式的類型

第二個和第三個操作數(shù)都是int字面量,所以表達式的類型也是int,不能在byte沒有顯式轉(zhuǎn)換的情況下分配給變量。因此編譯錯誤。

片段#2:

如果其中一個操作數(shù)是 T 類型,其中 T 是 byte、short 或 char,而另一個操作數(shù)是 int 類型的常量表達式(第 15.28 節(jié)),其值可以用 T 類型表示,則條件表達式的類型是T.

一個操作數(shù)是 a byte,另一個是int字面量,其值可以表示為byte,所以表達式的類型是byte,可以賦值給一個byte變量。

片段#3:

如果第二個和第三個操作數(shù)具有相同的類型(可能是空類型),那么這就是條件表達式的類型

第二個和第三個操作數(shù)都是byte,所以表達式的類型是byte,可以賦值給一個byte變量。

片段#4:

由于所有 3 個操作數(shù)都是常量,所以整個三元表達式是一個常量表達式,因此編譯器將此表達式視為一個簡單的賦值 - byte c = 20;- 這是有效的。


查看完整回答
反對 回復 2022-11-30
?
MM們

TA貢獻1886條經(jīng)驗 獲得超2個贊

語言規(guī)范中描述了此行為。


案例1和案例3用相同的點來描述:

如果第二個和第三個操作數(shù)具有相同的類型,那么這就是條件表達式的類型。

在情況1中,操作數(shù)是int類型,所以整個表達式是int類型,所以不兼容。在情況 3 中,字節(jié)類型的操作數(shù),因此結(jié)果是兼容的。


情況 2 讓我感到驚訝:我預計它也會失敗,因為 int 操作數(shù)會導致條件表達式為 int 類型。

但是,此行為在以下幾點中進行了描述:

如果其中一個操作數(shù)是 T 類型,其中 T 是 byte、short 或 char,而另一個操作數(shù)是 int 類型的常量表達式(§15.28),其值可以用 T 類型表示,則條件表達式的類型是 T .

20 是一個適合字節(jié)的常量表達式,因此結(jié)果是一個字節(jié)。


情況 4 也由用于情況 1 和 3 的“相同類型規(guī)則的操作數(shù)”來描述;然而,條件現(xiàn)在是常量的事實使它成為常量表達式。

分配給較窄類型的變量時,int 類型的常量表達式會隱式變窄,如賦值上下文中所述:

如果變量是 byte、short 或 char 類型,并且常量表達式的值可以用變量的類型表示,則可以使用收縮原始轉(zhuǎn)換。


查看完整回答
反對 回復 2022-11-30
  • 2 回答
  • 0 關(guān)注
  • 229 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號