<iostream> std:cout 函数内不打印(已修复:for 循环问题)

<iostream> std:cout within function not printing (FIXED:for loop issue)

没关系,修复它。 for 循环问题

我正在尝试用格式化输出做一些数字 c运行ching,但我 运行 遇到了一个问题,我的一半输出没有打印出来。我写了一个小测试代码来说明这个问题:

#include <iostream>

int testF(){
    for (int i; i<10; i++) {
        std::cout << i << "\n";
    }
    return 0;
}

int main(){
    std::cout << "START_(this_line_seems_to_be_causing_problems)\n";
    int sret = 1;
    sret = testF();
    std::cout << sret << "\n";
    std::cout << "END\n";
    return 0;
}

问题似乎与 std::cout << "START_(this_line_seems..." 行有关。 如果我注释掉这一行,它会打印testF()的内容。如果我不这样做,那么 testF() 不会打印,尽管它确实给出了 return 值。

重要的是我可以从 main 和我的函数中打印。有什么办法可以同时做到吗?

尝试初始化 i:

int testF(){
for (int i = 0; i<10; i++) {
    std::cout << i << "\n";
}
return 0;
}

以及为什么 int sret = 1; // 值永远不会被使用或传递给函数

你想要的是:

int sret;
sret = testF();
std::cout << sret << "\n";
std::cout << "END\n";

还有为什么要这样做

 sret = testF(),

 cout<<sret 

这只会将 0 添加到您的输出中, 而是直接调用 testF()。

for (int i; i<10; i++) {

此循环尝试从未初始化的 int 中读取数据。那是 未定义的行为,这意味着任何事情都可能发生,并且程序可能会出现异常行为。

实际上这里可能发生的是未初始化变量的内存位置包含一些随机数据,这些数据被解释为大于 10 的值,并且随机数据以某种方式受到先前 std::cout 语句的影响.但这只是猜测; C++ 语言根本没有定义程序的行为方式。

为了避免未定义的行为,您必须初始化变量:

for (int i = 0; i<10; i++) {

顺便说一下...

int sret = 1;
sret = testF();
std::cout << sret << "\n";

这可以更简洁地写成:

std::cout << testF() << "\n";