2016-12-04 145 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而是让你知道,你可以用隐含经营亏损信息。

相关问题