将两个无符号整型变量的差值存储到有符号整型变量中是否存在潜在问题?
考虑下面的例子:
#include <stdio.h>
int main()
{
unsigned int a, b, d1;
signed int d2;
a = 20;
b = 200;
d1 = a - b;
d2 = a - b; // Line 1
printf("d1 = %u\n", d1);
printf("d2 = %d\n", d2);
return 0;
}
如果在程序后面使用带符号的变量,会不会有什么潜在的问题?
最佳答案
是的,你可能会溢出。
2 个无符号整数的差可以和一个无符号整数一样大,并且不适合一个有符号整数(相同类型)[除非你要绕回负数,但很确定你不会想要那个]。
您可以通过测试用例轻松验证:
a = unsigned Int max;
b = 0;
关于c++ - 将无符号变量的差异存储到有符号变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27222430/