2017-08-12 68 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

相關問題