我正在学习整数溢出和下溢,并且想知道是否可以通过给出负输入n来控制j的值?
int i = n;
size_t j = i;
printf("%lu",j);
例如,如果我想要“j”的值为255,是否可以设计负数“n”来给我输出?
答案 0 :(得分:1)
我认为您正在寻找的是
signed char i = -1;
unsigned char j = i;
printf("%u\n", j);
在8位中,带符号的数字-1和#34;包围"无符号值255。
您问过size_t
因为,是的,它是无符号类型,但它通常是32位甚至64位。在这些大小中,数字255在有符号和无符号变体中都是可表示的(并且具有相同的表示),因此不存在对应于255的负数。但是您可以使用不同的值看到类似的效果。例如,在具有32位整数的计算机上,此代码为:
unsigned int i = 4294967041;
int j = i;
printf("%d\n", j);
很可能会打印-255。这个值是因为2 ^ 32 - 255 = 4294967041。