草庐IT

2147483648

全部标签

c++ - 为什么最负的 int 值会导致模棱两可的函数重载错误?

我正在学习C++中的函数重载并遇到了这个问题:voiddisplay(inta){cout据我了解,在int范围内给出的任何值(在我的情况下int是4字节)都将调用display(int)并且超出此范围的任何值都将是模棱两可的(因为编译器无法决定调用哪个函数)。它适用于完整范围的int值,但其最小值即-2147483648编译失败并出现错误callofoverloadeddisplay(longint)isambiguous但是对int取相同的值并打印该值会得到2147483648。我真的对这种行为感到困惑。为什么只有在传递最大负数时才会观察到这种行为?(如果short与-32768一