gpt4 book ai didi

int型变量创建上溢下溢并在C中输出值

转载 作者:太空宇宙 更新时间:2023-11-04 04:18:30 25 4
gpt4 key购买 nike

我必须编写一个程序来为int类型的变量创建上溢和下溢,并在发生上溢或下溢时以十进制和十六进制输出变量的值。

这是我的代码:

#include <stdio.h>
#include <limits.h>

int main() {


int delta = INT_MAX;
printf("\n delta = %d (%4x)", delta, delta);
delta = delta + 1;
printf("\n delta +1 = %d (%4x)", delta, delta);
delta = delta +2;
printf("\n delta +2 = %d (%4x)", delta, delta);

printf("\n");

int delta_min = INT_MIN;
printf("\n delta_min = %d (%4x)", delta_min, delta_min);
delta_min = delta_min - 1;
printf("\n delta_min -1 = %d (%4x)", delta_min, delta_min);
delta_min = delta_min -2;
printf("\n delta_min -2 = %d (%4x) \n\n", delta_min, delta_min);

return 0;
}

答案应该是这样的

delta         = 2147483647   (7fffffff)
delta +1 = -2147483648 (80000000)
delta + 2 = -2147483647 (80000001)

delta_min = -2147483648 (80000000)
delta_min -1 = 2147483647 (7fffffff)
delta_min -2 = 2147483646 (7ffffffe)

但是我的回答是这样的

delta         = 2147483647   (7fffffff)
delta +1 = -2147483648 (80000000)
delta + 2 = -2147483646 (80000002) <<

delta_min = -2147483648 (80000000)
delta_min -1 = 2147483647 (7fffffff)
delta_min -2 = 2147483645 (7ffffffd) <<

我不知道我在这里做错了什么。我不是要你解决我的家庭作业。只要一个提示就会非常有帮助!

感谢您抽空阅读~

最佳答案

您似乎不确定为什么要加 3 而不是加 2。

delta + 2     = -2147483646  (80000002)    <<

这是因为您重新分配了 delta 变量,而不是将结果存储在单独的变量中。

delta = delta + 1 // delta is reassigned to -2147483648
// delta + 1 = -2147483648 (80000000)
delta = delta + 2 // Here is the problem. It should be delta + 1.
// delta + 2 = -2147483646 (80000002) <<

相反,您应该每次只加 1。

关于int型变量创建上溢下溢并在C中输出值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49329833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com