turboc 中整形数的长度问题?

来源:百度知道 编辑:UC知道 时间:2024/06/17 21:09:54
本人编了了一个程序 依次输出 11 111 1111 ... 111111111
程序如下:
#include“stdio.h"
main()
{ int i;
long a;
a=1;
for(i=1;1<9;i++)
{a=10*a+1;
printf("a=%d",a);
}
}
输出结果总不对,把循环中的条件换位i<=4还能正确输出,输出结果是 11 111 1111 11111,但换成i<=5以后的条件都不能正确输出结果;输出结果为11 111 1111 11111 -19961 这会是什么错误呢,a的取值范围也没超过它的最大值啊?

printf("a=%d",a); 中的%d不匹配与long的格式好像是。你看下书。

turboc 整型int 2个字节能表示的最大数为32727 i=5时超出范围 他会只取出后面的5位