[英]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.