【问题标题】:could anyone explain why this c++ scripts executes this? [duplicate]谁能解释为什么这个 c++ 脚本会执行这个? [复制]
【发布时间】:2022-07-19 22:22:53
【问题描述】:
#include <iostream>
using namespace std;
int main()
{
    int x[45]={5,3}, y=1, z=1;
    int i=45;
    while (x[--i])
    {
        
        cout<<"inside"<<endl;
    }
    cout<<i<<endl;
}

它所做的只是跳过循环,将 i 减 1 并结束脚本。 就像为什么它永远不会进入循环?它不应该重复循环 45 次直到 i 为零吗?我不知道。

【问题讨论】:

  • 数组x的元素,索引从244被初始化为0while 循环的第一次迭代检查 x[44] != 0 是否为假。
  • 您是否尝试过使用调试器检查数组中的所有值,并一次一行地运行这个程序,看看到底发生了什么?如果不是,为什么不呢?如果你这样做了,你的调试器向你展示了什么?
  • 是时候使用调试器了!
  • 您将 x[i] 与 0 进行比较,而从您的描述来看,您似乎想将 i 与 0 进行比较。

标签: c++


【解决方案1】:

int 的数组中未显式初始化的元素,其中一些已初始化的元素被初始化为零。

首先,x[--i] 被评估为x[44]。元素的值为零,因此被解释为false,循环体不被执行。

【讨论】:

    【解决方案2】:

    在线

        while (x[--i])
    

    while() 中的值不是i,而是存储在数组 x 的第 i 个索引处的任何值。您的编译器可能会将所有未初始化的值初始化为 0,这就是条件失败的原因。

    【讨论】:

      猜你喜欢
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-21
      相关资源
      最近更新 更多