繁体   English   中英

<iostream> std:cout函数内没有打印(FIXED:for for issue issue)

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

NEVERMIND,固定它。 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 << "END\n";
    return 0;
}

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

重要的是我可以从main功能和我的功能进行打印。 我有办法做到这两点吗?

尝试初始化我:

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";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM