簡體   English   中英

C++中打印到stdout時/*注釋的行為

[英]The behavior of /* comment when printing to stdout in C++

我的問題來自以下 2 行簡單的 C++ 代碼:

cout<<"/*";
cout<<"*/";

在我看來,注釋分隔符/* */吃掉了其中的字符";cout<<" 所以這兩行必須等於:

cout<<"";

令人驚訝的是,當我編譯和測試代碼時,程序打印:

/**/

程序很可能將注釋分隔符識別為普通字符。 怎么會這樣? 代碼是在 gcc-c++-4.7.2 中編譯的。

C 標准告訴我們如何運行解析器,結果證明(出於各種原因)當您開始解析字符串文字時,您不會停止直到到達雙引號結尾,即使其中有注釋字符中間。 嘗試其中一些:

cout<<"// this won't give an error";

cout<<"Does it print /* this here */?";

來自 C常見問題解答

字符序列 /* 和 */ 在雙引號字符串中並不特殊,因此不會引入注釋,因為程序(特別是生成 C 代碼作為輸出的程序)可能想要打印它們。 (很難想象為什么有人想要或需要在帶引號的字符串中放置注釋。很容易想象需要打印“/*”的程序。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM