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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么我們不能將整數(shù)文字作為參數(shù)傳遞給以字節(jié)作為形式參數(shù)的方法

為什么我們不能將整數(shù)文字作為參數(shù)傳遞給以字節(jié)作為形式參數(shù)的方法

翻閱古今 2023-07-19 16:42:51
查詢1:byte a = 0; // int to byte implicit conversion happens, correct!, no CTE [compile time error]setByte(0); // CTE!, why ? implicit conversion do not happen here void setByte(byte b){}查詢2:byte b_byte = 128 - 1; // integer literal computation results to 127 int which implicitly casts to byte and as 127 is in range of byte so no CTE, Correct!int a_int = 2147483647; // in range of int, so no CTEint b_int = 2147483648 - 1; // still in range of int but CTE, why ?請(qǐng)解釋一下,并指出定義這些規(guī)則的 JLS 部分。
查看完整描述

1 回答

?
ABOUTYOU

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊

首先,賦值轉(zhuǎn)換,JLS 5.2涵蓋了可以賦值的值。

此外,如果表達(dá)式是byte、shortchar或 類型的常量表達(dá)式 (§15.28)?int

  • 如果變量的類型為 、 或 ,并且常量表達(dá)式的值可以用變量的類型表示,則可以使用縮小基byteshort轉(zhuǎn)換char。

對(duì)于byte a = 0;常量表達(dá)式 是 ,int?0它被縮小為 a?byte。

接下來,調(diào)用上下文,JLS 5.3介紹了可以將哪些值傳遞給方法。

嚴(yán)格或松散的調(diào)用上下文都不包括賦值上下文中允許的整數(shù)常量表達(dá)式的隱式縮小。

因此,您的代碼對(duì)于調(diào)用上下文(方法調(diào)用)中不允許的常量表達(dá)式縮小轉(zhuǎn)換存在編譯器錯(cuò)誤。

setByte(0);?//?no?implicit?narrowing?conversion,?even?if?it's?a?constant?expression
void?setByte(byte?b){}

您的代碼128 - 1是一個(gè)縮小為byte.

但是,2147483648 - 1由于2147483648它本身不是有效的int文字,因此被禁止,第 3.10.1 節(jié)“整數(shù)文字”。

如果十進(jìn)制文字 2147483648 出現(xiàn)在除一元減運(yùn)算符的操作數(shù)之外的任何位置,則會(huì)出現(xiàn)編譯時(shí)錯(cuò)誤;或者如果 int 類型的十進(jìn)制文字大于 2147483648 (2?31?)。

如果您確實(shí)想使用不必要的復(fù)雜表達(dá)式來初始化int,您可以使用long文字使表達(dá)式合法:

2147483648L?-?1

但隨后您必須將表達(dá)式顯式轉(zhuǎn)換為int;?不存在從任何比 更寬的int內(nèi)容到 的隱式縮小int

(int)?(2147483648L?-?1)

奇怪的是,您不必在表達(dá)式周圍放置括號(hào),以便強(qiáng)制轉(zhuǎn)換適用于整個(gè)表達(dá)式,盡管為了清楚起見,我強(qiáng)烈建議使用括號(hào)。

(int)?2147483648L?-?1??//?It's?2147483647!

對(duì)超出范圍的文字int進(jìn)行強(qiáng)制轉(zhuǎn)換將產(chǎn)生 -2147483648,一個(gè)有效值。這里減 1 涉及負(fù)方向溢出,產(chǎn)生預(yù)期值 2147483647。longintint


查看完整回答
反對(duì) 回復(fù) 2023-07-19
  • 1 回答
  • 0 關(guān)注
  • 116 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

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