当前位置:  开发笔记 > 编程语言 > 正文

此代码编译但在Visual Studio 2015社区中运行(c ++)时不显示输出

如何解决《此代码编译但在VisualStudio2015社区中运行(c++)时不显示输出》经验,为你挑选了1个好方法。



1> wally..:

以下行声明int恰好被调用cout(它不是std::cout流)

int cout = 5;

<<运营商peforms有点转变.

所以

cout << cout;

仅执行一次移位而不存储结果.


澄清一下,看看下面的程序:

#include

int main()
{
    int cout = 5;
    auto shiftedval = cout << cout;
    std::cout << "cout's value is " << cout << ", and the result of the bit shift is " << shiftedval << '\n';

    return 0;
}

它将输出:

cout's value is 5, and the result of the bit shift is 160

幕后发生的事情是,operator<< 已经超载以占据ostream左侧.

通过包含iostream你得到这个函数,编译器将知道你的意思,如果你有一个ostream<<运算符的左边.

如果没有库,<<那只会是一个按位移位运算符.


还要注意的是,如果你有不良深思熟虑包含using namespace std;using std::coutcout那么将意味着ostream<<将触发到库的调用operator<<函数.如果在添加using上面的声明之后包含cout新声明的名称的另一个声明将隐藏先前的声明,cout现在将int再次被视为一个声明,我们将回到正在使用的位移运算符功能.

例:

#include

using namespace std; // using std:: at global scope

int main()
{
    int cout = 5;
    auto shiftedval = cout << cout;

    //the following will not compile, cout is an int:
    cout << "cout's value is " << cout << ", and the result of the bit shift is " << shiftedval << '\n';

    //but we can get the cout from the global scope and the following will compile
    ::cout << "cout's value is " << cout << ", and the result of the bit shift is " << shiftedval << '\n';

    return 0;
}

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有