2013-06-24 37 views
2

這似乎是一個重複的問題,但實際上它完全不同,因爲其他問題不回答我的問題完全。我的問題是,爲什麼不C++編譯器輸出的文本在下一行,但它確實當我請在兩個文本之間的無限的空間到下一個line.Like如果我寫這樣的:爲什麼C++編譯器不能在下一行輸出文本,而在兩者之間放置空格呢?

#include<iostream> 
    using namespace std; 
    main() 
    { 
     cout<<"hi 
i am the king";//i have not included spaces after "hi" 
} 

它顯示錯誤:缺少終止符。那麼我知道我必須在下一行的引號中包含文本,但不應該認爲它是空格,因爲它是newline

而如果我寫了同樣的事情,包括像這樣的空間:

#include<iostream> 
     using namespace std; 
     main() 
     { 
      cout<<"hi 
    i am the king";//i have included spaces after "hi" up to the next line 
    } 

,但它不顯示錯誤,爲什麼編譯器認爲空格作爲空格這裏,而不是新行的第一個代碼。如果我沒有說清楚,我歡迎闡述這個問題的建議。謝謝!

+0

哪個編譯器? –

+0

emacs + windows 7上的gcc – 0decimal0

+3

你的第二行是否涉及換行符?你的編輯詞是否包含在內?可能第二個例子只是一條線? –

回答

1

因爲這是C++編譯器的工作原理,所以根據語言規範。編譯器對空格字符和換行符進行不同處理,即使兩者都是空格字符。

編譯器的行爲由「翻譯階段」一節中的語言規範描述。編譯器需要分別處理每一行。您可以通過在行尾使用\來讓它將多行代碼拼合成一行。編譯器不會自動縫線,也不會明確地要求這樣做。

目前還不清楚你的意思是「我已經在」hi「之後包含空格直到下一行」。如果你所包含的都是空格,那麼你就沒有「下一行」。要開始一個新行,你必須包含一個換行符。

+0

是的,我得到了。包括空間之間的單詞直到下一行沒有任何意義,因爲當我在較小的窗口上寫他們時,我需要很少的空間,但是當我使用較大的窗口它的一行,所以它只是如其中一條評論所述的文字包裝,它似乎是這樣,但實際上並非如此。 – 0decimal0

+0

順便說一句,我問「爲什麼」,你的答案正是我所要求的。謝謝!!爲了更好的理解,我現在會深入地閱讀語言規範。 – 0decimal0

0

作爲一個好的C++編程習慣,我從來沒有將我的一行代碼增加到100個以上的字符,這是一個很好的縮進, 所以,如果你關心的是編寫大量代碼,那麼你應該把代碼分成小行使用以下方法,

#include<iostream> 
using namespace std; 
main() 
{ 
     cout<<"hi      \ 
     i am the king";//i have included spaces after "hi" up to the next line 
} 

現在來看看你的問題,

1)所有的C++編譯器期望;作爲結束字符。你正在給予新的線性但不給予;所以你得到編譯器錯誤。

2)正如你說,很多空白的,直到結束字符後你沒有得到這個錯誤,

這裏是一個堆棧溢出一個精彩的辯論

Do you still limit line length in code?

這表明每行已結束在某個時候說x(這個值取決於你使用的編譯器)。 當你編寫代碼直到行結束時編譯器沒有找到任何新的行字符,所以對於第二點你不會發現任何錯誤。

+0

好吧,我沒有注意到你的代碼中的分鐘\包括它我們可以在新行中輸入文本,但它會連接兩個字符串並將其設置爲單行。 – 0decimal0

+0

@PHIfounder是你想要在輸出的新行的下一行.. –

+0

是的,就像把空格結果在文字換行,因此文本進入下一行,我不需要在下一行包括引號。 – 0decimal0

相關問題