C语言整型溢出问题

2025-01-02 19:50:46
推荐回答(5个)
回答1:

首先,C语言只要求long型数据长度不短于int型,short型不长于int型,并没有规定以上各数据类型所占内存的字节数,具体要看你是在哪个编译器下编译的而定;然后,z是long型,输出格式不应该是%ld吗?#如果确认了所用编译器和你所写的无误后,具体可以用if语句判断一下。附:用TurboC/TurboC++时:int(系统默认是有符号的,下同)-32768~32767;long:-2147483648~2147483647

回答2:

如果溢出(即超出了long的范围),z将变为小于0的一个数~~所以可以如下操作:
if(z<0) printf("error \n") ;
else
printf("%d\n",z);

回答3:

#include
void main()
{
int x,y,i;
long z,a;
scanf("%d,%d",&x,&y);
for(z=1,i=1;i<=y;i++)
z=z*x;
printf("%ld",z);
}

回答4:

据我所知用C语言是不可以的
除非C里面可以加入汇编的代码

回答5:

if(z > 2147483647)
长整型的范围-2147483647至2147483647