当前位置:聚美馆>智慧生活>心理>

c语言什么情况下得负数

心理 阅读(2.62W)
c语言什么情况下得负数

出现负数,是因为奇数、偶数的和太大,超过了long(长整型)类型的最大值了。

个数是对的,0-151554545共有151554546个数,其中奇数偶数各有75777273个。

至于for不动了,是for循环进入死循环了,你的编译器中int是2bytes,最大值为32768,当i加到32769的时候,就越界了,成为负数,所以i永远不会大于你输入的151554545这个数值,所以死循环。

这个问题有多种可能,不一而足。

算法有错误,最终计算结果是负数。输出自然会是负数。

例如:

int a=1

int b=a-2

printf("b=%d",b)

//输出结果:b=-1

超过变量类型的最大取值范围,发生溢出

例如Turbo C里int是16位,取值范围-32768~32767。如果计算过程当中,数值超过32767,由于补码的关系。结果就有可能是负数。这种情况,就需要使用取值范围更大的数据类型。

例程:

#include<stdio.h>

void main(){

int a,b,ch

a=32767

b=a+1

printf("a=%d,b=%d",a,b)

ch=getch()

}   

//输出结果:a=32767,b=-32768