c++ - 空白 "cout"是做什么的?

标签 c++ c++11

使用或不使用空白 cout 有什么区别? 此代码给出了使用 cout<<"";

的正确答案
    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        long long input, ans=1, vagsesh;
        double vag;
        cin>>input;

        while(input>0 || vag>0)
        {
            vag = ((log10(input))/(log10(2)));

            cout<<""; // if this is not used, it leads to a wrong answer

            vagsesh = vag;
            input -= pow(2,vagsesh);
            if(input > 0)
                {
                    ans++;
                }
            if(input==0)
                {
                    break;
                }
        }

        cout<<ans<<endl;

        return 0;
    }

cout<<"";做了什么?在这里?

最佳答案

cout << ""不是我认为的“空白cout”。 “空白 cout”如下所示:

std::cout;

事实上,std::cout << ""会考虑操纵者。示例:

#include <iostream>
#include <iomanip>

int main()
{
    std::cout << std::setw(10);
    std::cout << "";
}

输出:10个空格。

std::cout << "" 的另一个可观察效果,即使没有任何操纵器,当您将程序的输出重定向到一个文件时(使用类似 myprogram.exe > file.txt./myprogram > file.txt 的文件)。 std::cout然后写入文件,即使内容保持不变,您也可以观察到文件修改日期的变化。


至于你的代码,你有未定义的行为:

    double vag;
    cin>>input;

    while(input>0 || vag>0)

vag当您尝试从中读取时未初始化。也许这会导致奇怪的行为?因为,当然,在其他方面正确的程序中,cout << ""不可能改变结果。试试这个来防止未定义的行为:

double vag = 0.0;

附注:#include <bits/stdc++.h>不是标准的 C++。您应该将其更改为 #include <iostream> ,或者,通常,特定的 header 包含。和 using namespace std;是个坏习惯;即使它在您的示例程序中没有坏处,初学者有时也会在头文件的全局范围内使用它,从长远来看,它可能会造成严重破坏。

关于c++ - 空白 "cout"是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33063747/

相关文章:

c++ - 为什么 JSON 对象不是数组?

c++ - 以错误的顺序将函数应用于参数包中的每个元素

c++ - Makefile 目标错误

c++ - 如何使用带有 future<T> vector 的基于范围的 for 循环

c++ - 指向成员的指针如何知道它绑定(bind)了哪个成员?

c++ - 使用 foreach 循环 C++ 更新 std::list 中的每个值

c++ - 不使用 GUI 工具包开发 GUI 应用程序

c++ - 如何使用 Windows API 更改时区设置

c++ - 像素在自行初始化时移动,但不在循环中移动?

c++ - 未定义的函数引用