我碰到這個代碼片段來試圖編譯達特前沿基礎代碼:飛鏢編譯錯誤 - 的代碼片段怪異在
const uint8_t chars[kCharsLen] = { 1, 2, 127, 128, 192, 0, 255, -1 };
const String& str8 = String::Handle(String::New(chars, kCharsLen));
EXPECT_EQ(kCharsLen, str8.Length());
EXPECT_EQ(1, str8.CharAt(0));
EXPECT_EQ(127, str8.CharAt(2));
EXPECT_EQ(128, str8.CharAt(3));
EXPECT_EQ(0, str8.CharAt(5));
EXPECT_EQ(255, str8.CharAt(6));
EXPECT_EQ(255, str8.CharAt(7));
這似乎很奇怪,我認爲-1會嘗試分配到uint8_t。但我不願意刪除它,因爲它可能是一個測試,以確保您的編譯器支持這一點。其實我來到翻過它的原因是因爲我的Fedora 17的虛擬機上的編譯器(gcc 4.7)
編譯錯誤:
narrowing conversion of
-1
fromint
toconst uint8_t
{akaconst unsigned char
} inside{ }
is ill-formed in C++11 [-Werror=narrowing
]
符號的數字「包裝過度」時,他們的範圍之外,因此'-1'是說255不知道爲什麼,只是另一種方式你會得到一個編譯器錯誤。 – Pubby
不確定爲什麼255使用一次,但是-1也使用一次。 – chris
請發佈編譯器錯誤。 –