2017-08-12 63 views
-6

意外的是我在一个语句中有多个cout。在一个声明中没有多个cout的错误/警告

cout<<5<<cout<<6; 

它显示了一些垃圾,我意识到我的错误。但为什么在这种情况下没有错误或警告?我使用mingw代码块IDE进行windows操作。

编辑:完整的代码是

#include <iostream> 

using namespace std; 

int main(void) 
{ 
    cout<<5<<cout<<6; 
    return(0); 
} 

构建消息是

的mingw32-G ++ EXE -Os -pedantic -Wextra -Wall -c“C:\研究 材料\ C++ \ CPP程序MP Compiled \ inputOutput \ q1.cpp“-o ”C:\ Study Materials \ C++ \ CPP Programs MP Compiled \ inputOutput \ q1.o“ mingw32-g ++。exe -o”C:\ Study Materials \ C++ \ CPP程序MP 编译\ inputOutput \ q1.exe“”C:\ Study Materials \ C++ \ CPP程序MP 编译\ inputOutput \ q1.o“-std = gnu99进程终止于 状态0(0分钟,2秒)0错误,0警告(0) 分钟(s) ),2秒)

+1

你是什么意思_no errors_? [请点击此处查看](http://coliru.stacked-crooked.com/a/5383884462569794) – user0042

+0

您能否显示重现错误所需的整个代码? – Galik

+1

根据标准,不需要编译器进行诊断的*许多*错误。这完全取决于你*遵循语言规则并编写正确的代码。编译器通常会尽力提供帮助,但不要期望它能诊断所有错误。仅仅因为*编译*并不意味着它*起作用*。 –

回答

2

编译器为什么要警告你的东西是完全合法的?您正在指示程序输出cout的内容,这是合法的,并且会起作用。

我不知道operator <<是如何定义为cout,但打印其地址是我的期望,所以像0x489944(或更长)似乎恰到好处。

随着5和周围的6,您的输出似乎是正确的:5 + 0x489944 + 6 = 50x4899446

+0

对不起,结果是垃圾。这意味着它不起作用,使用是非法的。 – Rajesh

+1

你怎么知道它是垃圾?它可能是cout的地址。 – Aganju

+0

现在你的回答在看过原帖子中的评论后对我有意义。可能是你可以添加更多的解释,如果我们输出一个函数名或类名会发生什么。 – Rajesh

0

也许没有看到任何错误

1

cout是C.完全合法这意味着,编译器不会告诉你,什么是错的,没有什么是错的!

这意味着不显示错误。

+0

你的回答比我的好得多...... +你的回答。 – Adi219

相关问题