阿帕茶次 2023-12-03 16:05 采纳率: 51.7%
浏览 1
已结题

c语言运行问题,变量生效区间

img

img


输入20 30
测试
i=20,再第一次的for循环中,最后while里i的值为零,第二次循环语言i应该等于21,但是却变成了1,while循环里的i应该只在while里面生效才对,?
输出:
按下回车键之后没有反应
改:

img


将i赋给temp之后以上的问题都解决了,这是为什么

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-12-03 18:40
    关注

    【以下回答由 GPT 生成】

    这个问题是由于变量作用域和变量重名导致的。

    在C语言中,变量的作用域决定了变量在哪些地方是可见的。在这个代码片段中,有两个i变量,一个在main函数中,一个在for循环中。它们的作用域是不同的。

    main函数中声明的i变量的作用域是整个main函数,它覆盖了for循环中声明的同名变量。所以当for循环中的i被修改后,不会影响到main函数中的i

    解决这个问题的方法是对 for 循环中的变量 i 进行重命名,以便区分main函数中的i变量。

    另外,将i赋给temp之后,循环正常运行是因为temp变量在循环中递减,所以每个循环中i 的初始值都会不同,从而保证了每个循环中都会打印出正确的值。

    下面是修改后的代码:

    #include <stdio.h>
    
    int main() {
        int i = 20;
        int temp = i;
    
        while (temp > 0) {
            for (int j = temp; j > 0; j--) { // 修改为 j,避免与 main 函数中的 i 冲突
                printf("%d\n", j);
            }
            temp--;
        }
    
        printf("按下回车键后没有反应\n");
    
        return 0;
    }
    

    这样就可以得到期望的输出了:

    20
    19
    18
    ...
    1
    按下回车键后没有反应
    

    希望能帮到你!如果还有其他问题,请随时提问。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月3日
  • 已采纳回答 12月3日
  • 创建了问题 12月3日

悬赏问题

  • ¥15 静电纺丝煅烧后如何得到柔性纤维
  • ¥15 (标签-react native|关键词-镜像源)
  • ¥100 照片生成3D人脸视频
  • ¥15 伪装视频时长问题修改MP4的时长问题,
  • ¥15 JETSON NANO
  • ¥15 VS开发qt时如何在paintgl函数中用pushbutton控制切换纹理
  • ¥20 关于 openpyxl 处理excel文件地问题
  • ¥15 MS中不知道高分子的构型怎么构建模型
  • ¥60 QQOP数据,什么是op数据号,怎么提取op数据!能不能大量提取(语言-c语言)
  • ¥15 matlab代码 关于微分方程和嵌套的分段函数。