我正在辩论是否可以摆脱编译器警告。警告来自将uint32与-1比较。
现在,仅看一眼这似乎是不明智的事情,因为uint32不应永远是负面的,但我没有编写此代码,也不熟悉c++的工作方式,所以我问你。这是一些示例代码来说明正在发生的事情。
bool isMyAddressValid = false;
unsigned int myAddress(-1);
unsigned int translatedAddress;
if(isMyAddressValid)
{
translatedAddress = 500;
}
else
{
translatedAddress = -1;
}
myAddress = translatedAddress;
if(myAddress == -1)
{
std::cout << "ERROR OCCURED";
}
else
{
std::cout << "SUCCESS";
}`
那么这是有效的代码吗?这是我不了解的Cism吗?
最佳答案
将unsigned
类型设置为-1是将其设置为最大可能值的惯用方式,而不管该类型中的位数如何。
比较笨拙但也许更清晰的方法是编写
translatedAddresss = std::numeric_limits<decltype(translatedAddresss)>::max();
关于c++ - C++ : Setting a uint32 to an int32 (negative value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49453534/