空白"cout"有什么作用?

what a blank "cout" does?

本文关键字:作用 什么 cout 空白      更新时间:2023-10-16

空白cout使用与否有什么不同?该代码给出了使用cout<lt;";

    #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<lt;";在这里

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>,或者通常更改为特定的头包含。CCD_ 11是一个坏习惯;即使它在示例程序中没有影响,初学者有时也会在头文件的全局范围内使用它,从长远来看,它可能会造成严重破坏。