VC中,中文註釋引起的錯誤

試看如下的代碼:
int main() {
int a = 0;
int b = 0;

/**停車來源字*/                      //(1)
a = 10;
b = 20;

/**註釋結束*/                           //(2)
printf("a=%d/tb=%d", a, b);

return 0;
}
運行的結果居然是:a=0 b=0
分析後發現中間的賦值語句被當成了註釋,忽略掉了。

(這是轉發文章,實際上在我的VC6.0運行,編譯都不能通過)

(1)(2)行,最後各加上一個*,運行正確;

網友回覆:

BTW:不同編譯器的“最佳猜測”的算法可能不一樣,因此不同編譯器測試效果也可能是不同的

 

任意編譯器在使用MCBS時都可能出這種問題,但是這種問題出現的概率確實很少,只有一個編碼序列在多個代碼集同時有含義纔出現

只有特定序列碰巧使得它“最佳匹配算法”誤判才行,你加入任何一個字符,就改變了序列,最佳匹配算法就不錯了,當然就沒問題了。
例如,如果“字*/”導致*被吃掉,如果你寫成“字 */”,它就吃不掉了,如果你改成“字**/”,則即使吃掉第一個*,第二個*還是結束了註釋

 

發佈了26 篇原創文章 · 獲贊 8 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章