C語言規定:除非在sizeof的運算元中,常量表示式不應包含逗號運算子?

Mr.P發表於2014-02-08

如題,這個問題在C語言標準中沒有過多的描述為什麼,據我所知,常量表示式是可以包含逗號運算子的,形如這樣的逗號常量表示式(3,2),它的值就是個常值,這個問題讓人十分迷茫,求解。

除了在下面評論中描述的經典C語言中有過描述,還在《C專家程式設計》的第一章1.8節ANSI C標準結構中也有引述常量表示式的有關內容,所以對於如題的問題描述是準確的,也就是說:無論是K&R的經典C,還是ANSI C都對於常量表示式的描述都是:除非包含在sizeof的運算元內(我們知道取位元組表示式是常量表示式),常量表示式不應包含逗號運算子(當然還有賦值、自增自減、函式呼叫運算子)。其他運算子則都可以包含在常量表示式中,而賦值、自增自減、函式呼叫運算子是不能在常量表示式中存在的,當然除了上面說的取位元組常量表示式。

相關文章