使用或不使用空白 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/