gpt4 book ai didi

c - C语言中短整型溢出

转载 作者:行者123 更新时间:2023-11-30 15:15:37 25 4
gpt4 key购买 nike

我正在尝试编写一个在 C 中显示短整型溢出的程序。在我的程序中,您输入两个短整型,然后我将它们相加。如果加法大于 32767,则出现负溢出;如果加法小于 -32678,则出现正溢出。

现在我的问题是我的程序在使用 if 时拒绝遵守任何条件。但是当我使用 do while 时,我的程序认为我同时尊重这两个条件。

short int n1, n2, somme;
printf("Enter the first number: ");
scanf("%hi", &n1);
printf("enter the second number : ");

scanf("%hi", &n2);

somme= n1 + n2;
do
{
printf("negative overflow\n");
}while (somme>32767);
do
{
printf("negative overflow\n");
}while ( somme<-32768);

printf("the result is %hi", somme);

抱歉我的英语不好。感谢您的阅读,请帮忙。

最佳答案

我对您的代码进行了一些更改以演示您想要执行的操作,

#include<stdio.h>
int main(){
short int n1, n2, somme;
printf("Enter the first number: ");
scanf("%hi", &n1);
printf("Enter the second number : ");
scanf("%hi", &n2);

somme = n1 + n2;
if( (n1 + n2) > 32767)
printf("negative overflow\n");
else if ( (n1 + n2) < -32768)
printf("positive overflow\n");

printf("int addition result is %d\n", n1 + n2);
printf("short addition result is %hi\n", somme);
return 0;
}

这是输出,

Enter the first number: -20000
Enter the second number : -20000
positive overflow
int addition result is -40000
short addition result is 25536
-----------------------------
Enter the first number: 20000
Enter the second number : 20000
negative overflow
int addition result is 40000
short addition result is -25536
<小时/>

那么,您的代码中的错误是,

  • 您正在使用 do...while 来检查条件。使用if-else .
  • 您将总和存储在 short 中,并将其与 -3276832767 进行比较。您试图通过将总和与超出其可容纳值范围的值进行比较来检查总和是否溢出。 Jérôme Leducq也对此进行了解释在他的answer .

关于c - C语言中短整型溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33495277/

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