2 詞法 陷阱

2022-05-05 05:27:07 字數 487 閱讀 1147

某些編譯器允許巢狀注釋。請寫乙個程式測試,要求:無論是對允許巢狀注釋的編譯器,還是對不允許巢狀注釋的編譯器,該程式都能正常通過編譯,但是這兩者情況下執行的結果卻不相同。

#include#includeusing namespace std;

int main(void)

不允許巢狀(已測試):

bufsize /* is 8 bytes but len is */ 7 len

允許巢狀(根據書中內容解釋後得到的):

bufsize 7 len

為什麼n-->0的含義是 n-- >0,而不是 n- -> 0

n-->0根據貪心法則在遇到》之時已被解釋為n--,故最終被解釋為n-- > 0。

a+++++b的含義是什麼?

由於後置++運算子優先順序高於前置++運算子,所以可以解釋為(a++)+++b,由於a++之後的結果不能作為左值使用所以後面的只能與b結合形成:(a++)+(++b)。

C缺陷與陷阱 詞法陷阱

從較低的層面考察,程式是由符號 token 序列組成的,將程式分解成符號的過程,稱為詞法分析。這節主要分析在程式被詞法分析器分解成各個符號的過程中可能出現的問題。編譯器中負責將程式分解成乙個乙個符號的部分,一般稱之為詞法分析器。c語言中符號之間的空白 包括空格符,製表符和換行符 將被忽略。術語符號 ...

C陷阱與缺陷(一)詞法 陷阱

第一章 詞法 陷阱 1 不同於 1 while c c t c n 賦值運算子 的優先順序低於邏輯運算子 相當於 c t c n 賦給了c,條件永遠為真 2 if x y 應該寫成if x y 0 對變數進行賦值並檢查該變數的新值是否為0 2 和 不同於 和 按位運算子 和 邏輯運算子 和 3 詞法...

C 陷阱與缺陷 (一)詞法陷阱

碼字不易,對你有幫助點讚 關注支援一下作者 看更多乾貨,獲取第一時間更新 練習上傳至 0.不同於 當程式設計師本意是作比較運算時,卻可能無意中誤寫成了賦值運算。1.本意是檢查 x 與 y 是否相等 if x y break 實際上是將 y 的值賦值給了 x 然後再檢查該值是否為 0 2.本意是跳過檔...