This question already has answers here:
What happens if I assign a negative value to an unsigned variable?
(6个答案)
3年前关闭。
在以下代码中,我已将
GCC编译成功,没有警告,但是结果不是我期望的:
码:
为什么编译器不使用
(6个答案)
3年前关闭。
在以下代码中,我已将
size_t
用作函数参数并传递了负值。我已经使用以下命令在GCC(Linux)上编译了程序。g++ -Wall size.cpp -o size
GCC编译成功,没有警告,但是结果不是我期望的:
size_t : 18446744073709551615
int : -1
码:
#include <iostream>
void func1(size_t i)
{
std::cout << "size_t : " << i << std::endl;
}
void func2(int i)
{
std::cout << "int : " << i << std::endl;
}
int main()
{
func1(-1);
func2(-1);
return 0;
}
为什么编译器不使用
size_t
生成负值警告? 最佳答案
由于size_t
在C++中始终是未签名的:
因为将size_t
分配为负值会调用有符号到无符号的转换,这是定义明确的:
关于c++ - 为什么编译器不为size_t生成负值警告? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46968502/
10-11 15:48