分页: 1 / 1

真不明白!

发表于 : 2006-07-28 23:25
YinzCN

代码: 全选

main()

{

	long int i,a=2;

	for(i=1; i<=200; i++){
		a = a*2;
	}

	printf("%d\n",a);
}
结果是 0 的

发表于 : 2006-07-29 3:54
laborer
乘法溢出了,试试这个程序你就明白了

代码: 全选

#include <stdio.h>

int main() {
    printf("%d\n", (1 << 31) * 2);
    return 0;
}

发表于 : 2006-07-29 11:23
YinzCN
谢谢!我慢慢研究。。。

发表于 : 2006-08-03 8:27
ectotherm
long int 最多只能装 2 的 32 次方,你那个严重地溢出了。还有 main() 最好要写上 int main(),编译器默认认为不加返回值声明的 main() 返回 int,那个在 c99 中已经被明令淘汰了,编译器只是出于兼容的目的让你通过而已。

ps 请在题目中写清楚不明白什么。