学生的问题,“下面的程序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;
}
阅读(1037) | 评论(0) | 转发(0) |