关于有符号整形变量的自减问题
#include <stdio.h>//例一#define height 7
int main()
{
int gap,i,n,k=0,ch;
printf("请输入中间空格数:\n");
scanf("%d",&gap);
printf("输出结果如下:\n");
for(i = 0;i < height; i++)
{
int temp = gap; //这里又定义了一个整形变量,此时例一的情况正常
while(temp--)
{
putchar(' ');
}
}
return 0;
}
#include <stdio.h>//例二
#define height 7
int main()
{
int gap,i,n,k=0,ch;
printf("请输入中间空格数:\n");
scanf("%d",&gap);
printf("输出结果如下:\n");
for(i = 0;i < height; i++)
{
while(gap--)//这次没有定义一个整形变量,而是直接用gap进行自减,但结果却显示无限循环,为什么?明明gap与temp的类型一样,存放的数据也一样。
{
putchar(' ');
}
}
return 0;
} int temp = gap; //这里每次跳出while循环后都会重新把gap的值赋给temp,而如果没有这句代码直接使用while(gap--)的话,当i=1,即循环完i=0的时候,gap=0,然后gap自减得到-1,接下来就永远跳不出while循环了,所以是个死循环
sanguine_boy 发表于 2019-12-7 15:44
int temp = gap; //这里每次跳出while循环后都会重新把gap的值赋给temp,而如果没有这句代码直接使用whil ...
谢谢,我居然没想到{:5_106:}
页:
[1]