2016-12-04 40 views
0

我目前正在學習C++,我很好奇,如果有修復我收到的警告。我使用Int32來定義我的整數。嘗試使用.length()函數將變量設置爲字符串的長度時,我收到以下錯誤。C++使用INT32:隱式轉換失去整數精度

的代碼有問題的行如下:

int32 HiddenWordLength = MyHiddenWord.length(); 

非常感謝!

+0

這是一個警告,而不是一個錯誤。 –

+0

注意:長度通常是**無符號**數量。 'int32_t'類型是**簽名**數量。您可能會失去精度,因爲* signed *類型通常會爲符號保留至少1位。想一想,單詞的長度可以是負值嗎?那麼,爲什麼你使用一個有符號值的長度? –

回答

0

string.length()返回size_t類型的值(定義爲unsigned int)。由於Int32變量可能無法保存從.length()方法返回的值,因此編譯器會發出警告,因爲Int32類型可以保存範圍爲-2,147,483,648至2,147,483,647的值,而size_t類型(無符號整數)可以具有值從0到4,294,967,295。

1

MyHiddenWord.length();沒有返回的INT32類型,編譯器會悄悄地調整/轉換是爲INT32而是讓你知道,你可以用隱含經營虧損信息。

相關問題