C語言裡面什麼叫做巢狀注釋,C語言中 在允許巢狀注釋和不允許巢狀注釋情況下的執行結果有什麼不同?

2022-06-10 12:06:33 字數 1166 閱讀 9058

1樓:許詩文

c語言巢狀注釋

/*/**/

對於乙個允許巢狀注釋的c編譯器,無論上面的符號串行後面跟什麼,都屬於注釋的一部分;而對於不允許巢狀注釋的c編譯器,後面跟的就是實實在在的**內容。也許有人因此想到可以在後面再跟乙個用一對引號引起的注釋結束符:

/*/**/ "*/"

如果允許巢狀注釋,上面的符號串行就等效於乙個引號;如果不允許,那麼就等效於乙個字串"*i"。因此,我們可以接著在後面跟乙個注釋開始符以及乙個引號:

/*/**/ "*/"/*"

如果允許巢狀注釋,上面就等效於用一對引號引起的注釋開始符"/*";如果不允許,那麼就等效於乙個用引號括起的注釋結束符,後跟一段未結束的注釋。我們可以簡單地讓最後的注釋結束:

/*/**/ "*/"/*" /**/

這樣,如果允許巢狀注釋,上面的表示式就等效於"/*",:如果不允許,那麼就等效於,"*/"。

/*/*/0*/**/1

這個解法主要利用了編譯器作詞法分析時的「大嘴法」規則。如果編譯器允許巢狀注釋,則上式將被解釋為:

/*/*/0*/**/1

兩個/*符號與兩個*/符號正好匹配,所以上式的值就是1。如果不允許巢狀注釋,注釋中的/*將被忽略。因此,即使卿出現在注釋中也沒有特殊的含義:上面的表示式因此將被這樣解釋:

/*/*/0*/**/1

它的值就是0*1,也就是0o

#define a /* aaa /* a*/ a

#define b */

bool cannesting()

2樓:匿名使用者

比如:/*aaa/*bbb*/aaa*/

這樣的注釋。有的編譯器看到bbb後面的*/就會以為注釋結束了。這就出錯了。

c語言中 /*/**/"*/"/*"/**/ 在允許巢狀注釋和不允許巢狀注釋情況下的執行結果有什麼不同?

3樓:匿名使用者

注釋符號需要成對出現,允許巢狀注釋的話,對結果無任何影響,否則會當作程式中的某段**,甚至導致程式不能執行,與結果千差萬別。

c語言注中什麼是注釋,注釋是什麼意思

4樓:匿名使用者

注釋就是 編譯器不會編譯的部分 也就是說 為了方便程式設計師標記使用的

c語言中,函式可以巢狀定義嗎,C語言中,函式可以巢狀定義嗎

取決於編譯器.我在ubuntu16.04 用預設gcc,在eclipse中測試可以實現巢狀定義.經測試在函式中定義的函式,在當前作用域可以被呼叫.這樣一來,c語言貌似具有了一些物件導向的特性,使用起來比較方便 定義的時候不能巢狀,但是定義的時候可以遞迴 除了主函式以外都可以,不過在該函式巢狀定義前要...

問個C語言中for語句巢狀if的問題

d 0也就是說d為真,那麼應抄該執行 ee執行完畢後執行c 如此反覆,直到b為0,執行f 我想你想問的是d為0時的情況,那麼執行c,直到b為0,執行f我不已經說了麼,我想你想問的是d為0時的情況,那麼執行c,直到b為0,執行f 當d 0時 返回執行c。如果滿足b,就再執行d,不滿足就執行f c語言高...

c語言,if語句,n s流程圖問題,巢狀if流程圖用處理框還是判斷框

if i 10 中的 是判斷 中的 是處理.下面的流程圖中,若輸出的m值為56,則判斷框中填入的語句可以是 a n 10 b n 9 c n 程式在執行過 bai程中各變數的值如下 du表示 zhi n 是dao 否繼續迴圈版 m 迴圈前0 1 第一圈1 是 2 第二圈權2 是 4 第三圈3 是 7...