C语言正数相加变负数

#include<stdio.h>
void main()
{ int i,sum=0;
for(i=200;i<=400;i++)
if(i%3!=0) sum=sum+i;
printf("%d\n",sum); }
答案是-25336,这是为什么啊

第1个回答  2014-04-14
编译器的问题。有可能你的编译器int类型是16位的。

你可以把你的sum类型定义成long试一试。追问

定义成long也是负的诶

本回答被提问者采纳
第2个回答  2014-04-14
C语言中int类型占2个字节表示范围为-32768到32767,你的求和结果不在这个范围,就溢出了追问

是在这个范围内吧

追答

不同的编译环境和不同的系统,int所占的位数都可能不同

第3个回答  2014-04-14
你确定是这个结果吗?我运行怎么不是负值?
相似回答
大家正在搜