鱼C论坛

 找回密码
 立即注册
查看: 1142|回复: 2

[已解决]关于有符号整形变量的自减问题

[复制链接]
发表于 2019-12-7 10:30:14 | 显示全部楼层 |阅读模式
8鱼币
#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;
}
最佳答案
2019-12-7 10:30:15
int temp = gap;   //这里每次跳出while循环后都会重新把gap的值赋给temp,而如果没有这句代码直接使用while(gap--)的话,当i=1,即循环完i=0的时候,gap=0,然后gap自减得到-1,接下来就永远跳不出while循环了,所以是个死循环
               
1.png
2.png

最佳答案

查看完整内容

int temp = gap; //这里每次跳出while循环后都会重新把gap的值赋给temp,而如果没有这句代码直接使用while(gap--)的话,当i=1,即循环完i=0的时候,gap=0,然后gap自减得到-1,接下来就永远跳不出while循环了,所以是个死循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-7 10:30:15 | 显示全部楼层    本楼为最佳答案   
int temp = gap;   //这里每次跳出while循环后都会重新把gap的值赋给temp,而如果没有这句代码直接使用while(gap--)的话,当i=1,即循环完i=0的时候,gap=0,然后gap自减得到-1,接下来就永远跳不出while循环了,所以是个死循环
               
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-12-7 22:40:07 | 显示全部楼层
sanguine_boy 发表于 2019-12-7 15:44
int temp = gap;   //这里每次跳出while循环后都会重新把gap的值赋给temp,而如果没有这句代码直接使用whil ...

谢谢,我居然没想到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 07:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表