C语言中数组可以定义成长整型的吗?

cherryleo 2006-05-29 10:36:55
谭浩强《C程序设计》(第三版)第七章数组,一维数组举例一节,133页,用数组来处理求Fibonacci数列问题,程序只输出了前20个数,如果要像第六章那样输出数列的前40个数,我把程序中的20改成40,并把数组定义成长整型,程序如下:

#include<stdio.h>
void main()
{ int i;
long int f[40]={1,1};
for(i=2;i<40;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<40;i++)
{ if(i%4==0) printf("\n");
printf("%12d",f[i]);
}
printf("\n");
}

为什么结果不对呢?后20项的结果中有负数。
而该书第六章用循环求Fibonacci数列的前40项时,也是把变量定义成长整型。难道数组元素不能太大?
...全文
471 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cherryleo 2006-05-29
  • 打赏
  • 举报
回复
为什么结贴给分却提示“贴子回复次数大于跟给分次数”?
feny911 2006-05-29
  • 打赏
  • 举报
回复
靠,每次我都慢.......
feny911 2006-05-29
  • 打赏
  • 举报
回复
格式和定义是否相同并不重要,重要的是
printf("%12d"...........); 会把后面的参数隐式的转成int型,因此必须写成
printf("%12ld"...........);
cherryleo 2006-05-29
  • 打赏
  • 举报
回复
知道了,应该以长整型输出%12ld,谢谢大家!
cherryleo 2006-05-29
  • 打赏
  • 举报
回复
(注意 printf("%12ld"...........); 格式和定义要相同

----------------

输出格式与定义的长短应该没关系吧。




VC++ C-Free 等编译器int为四字节,所以不会有问题

楼主估计用的是TC int 为两字节

-----------------------

int是两字节,但我定义的是长整型long int是四字节啊




feny911 2006-05-29
  • 打赏
  • 举报
回复
printf("%12ld"...........); //正解
lj860603 2006-05-29
  • 打赏
  • 举报
回复
注意 printf("%12ld"...........); 格式和定义要相同
-------------
这个问题不大。
cherryleo 2006-05-29
  • 打赏
  • 举报
回复
我在tc3.0下运行的结果,第24项是-19168
hitxsy 2006-05-29
  • 打赏
  • 举报
回复
VC++ C-Free 等编译器int为四字节,所以不会有问题

楼主估计用的是TC int 为两字节
hitxsy 2006-05-29
  • 打赏
  • 举报
回复
注意 printf("%12ld"...........); 格式和定义要相同
lj860603 2006-05-29
  • 打赏
  • 举报
回复
C语言中数组可以定义成长整型的吗?
-----------
当然可以!

为什么结果不对呢?
----------
VC下没错。

69,379

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧