gpt4 book ai didi

C++:警告:有符号和无符号表达式(Gmake、freebsd)

转载 作者:行者123 更新时间:2023-11-30 01:51:29 40 4
gpt4 key购买 nike

我遇到了一个小问题,希望你能帮助我。谢谢。

错误代码如下:

FILE.cpp: In member function 'bool DragonSoulTable::ReadAdditionalApplys()':
FILE.cpp:223: warning: comparison between signed and unsigned integer expressions

这是我放在 pastebin 上的代码,因为它太大了,无法将代码放在论坛上 FILE.CPP

最佳答案

转到第 223 行,您有:

for (int i = 0; i < m_vecDragonSoulNames.size(); i++)

如您所见,iint 类型,但 m_vecDragonSoulNames.size() 返回 int >??

其实你的代码里有很多这样的比较。

当您比较有符号和无符号类型时,编译器会给出警告(而不是错误),这是因为这两种类型的范围不同。这是有充分理由的,如果你不小心,结果可能会令人惊讶......

如果您知道进行这样的比较是安全的,您可以明确地将其中一个值强制转换为另一个值的同一类型,这样警告就会消失。

类似于:

unsigned int a = someUnisgnedValue;
int b = someSignedValue;
if ((unsigned) b < a)
//... do something

或者您可以只使用相同类型的两者。例如,在您的代码的第 223 行中,您可以执行以下操作:

for (unsigned int i = 0; i < m_vecDragonSoulNames.size(); i++)

请检查另一个问题:When to use unsigned values over signed ones?

关于C++:警告:有符号和无符号表达式(Gmake、freebsd),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26112406/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com