Chinaunix首页 | 论坛 | 博客
  • 博客访问: 607281
  • 博文数量: 197
  • 博客积分: 7001
  • 博客等级: 大校
  • 技术积分: 2155
  • 用 户 组: 普通用户
  • 注册时间: 2005-02-24 00:29
文章分类

全部博文(197)

文章存档

2022年(1)

2019年(2)

2015年(1)

2012年(100)

2011年(69)

2010年(14)

2007年(3)

2005年(7)

分类: C/C++

2012-02-29 20:30:42

学生的问题,“下面的程序short和int有什么区别,输1 2 3 4 5为什么short就不行“(OS Feodra 14)

#include
int main(void)
{
 short  a[5],n;

  for(n=0;n<5;n++)
    {
    scanf("%d",&a[n]);
   
 }
  for(n=4;n>=0;n--)
    printf("%d\n",a[n]);
  return 0;
}
答:%d错了(应该是%hd,多少年没有输入short了,man了一下才确定。TC年代做没做过不记得了,但是那个年代short和int没区别,即使自己用%d也不会发现问题). short不行是因为%d输入的话数组a的输入覆盖到了n,n被修改,导致循环无法结束。改成下面的便可知
#include
int main(void)
{
 short  a[5],n;

  for(n=0;n<5;n++)
    {
    scanf("%d",&a[n]);
    printf("\nn=%d",n);
  
 }
  for(n=4;n>=0;n--)
    printf("%hd\n",a[n]);
    return 0;
}
阅读(1032) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~