<iostream> 标准:函数内的cout不打印(修复:用于循环问题)

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

本文关键字:修复 打印 用于 问题 循环 iostream lt gt 标准 函数 cout      更新时间:2023-10-16

没关系,已经修好了。For循环问题

我正试图用格式化的输出做一些数字运算,我遇到了一个问题,一半的输出不打印。我写了一个小的测试代码来说明这个问题:

#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 << "ENDn";
    return 0;
}

问题似乎与std::cout << "START_(this_line_seems..."这一行有关。如果我注释掉这一行,它将打印testF()的内容。如果我不那么testF()不打印,虽然它确实给出了一个返回值。

重要的是,我可以从main和我的函数中打印。我能不能两者兼顾?

尝试初始化i:

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

和为什么int string = 1;//value永远不会被使用或传递给函数

你想要的只是:

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

 sret = testF(),
 cout<<sret 

这将在你的输出中添加0,直接调用testF()

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

这个循环尝试从未初始化的int中读取数据。这是未定义的行为,这意味着任何事情都可能发生,程序可能会表现得很奇怪。

在实践中可能发生的事情是,未初始化变量的内存位置包含一些随机数据,这些数据被解释为大于10的东西,并且随机数据在某种程度上受到前面std::cout语句的影响。但这只是猜测;c++语言根本没有定义程序的行为。

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

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

By the way…

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

可以更简洁地写为:

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