uj5u.com熱心網友回復:
因為s1[i++]是先以i++為整體的值作為s1的下表,然后在改變i的值,原因是這兒的自增是后增,如果是++i就是相反的。uj5u.com熱心網友回復:
希望對您有幫助:https://blog.csdn.net/it_xiangqiang/category_10581430.htmluj5u.com熱心網友回復:
問題的根源是很多人沒意識到,運算式是有值的,在一個大的運算式中,運算子操作的是子運算式的值。如果需要,任何運算式都有一個值,即使是 void 運算式,也會有一個(空)值。運算式 i ++ 的值是左值 i 遞增前的原值,同時,這個運算式還有一個將 i 的存盤值加一的副作用。因此,
x = i ++;
是將運算式 i ++ 的值賦給 x (同時 i 的存盤值遞增)。傳統的解釋是將 i 的值賦給 x ,然后 i 再遞增,但它無法從邏輯上解釋,i 是和 ++ 結合的,它憑什么,有什么義務要把自己的值賦給左邊的 x 呢?畢竟,賦值運算子的右運算元是 i ++ 而不是 i 。
運算式 ++ i 的值是左值 i 遞增后的新值,同時,這個運算式還有一個將 i 的存盤值加一的副作用。因此,
x =++ i;
是將運算式 ++ i 的值賦給 x (同時 i 的存盤值遞增)。傳統的解釋是先遞增 i ,再把 i 賦給 x,但它同樣無法從邏輯上解釋,i 是和 ++ 結合的,它的義務是按照 ++ 的要求完成遞增,它憑什么,有什么義務要把遞增后的值賦給左邊的 x 呢?畢竟,賦值運算子的右運算元是 ++ i 而不是 i 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/283642.html
標籤:C語言
下一篇:求助 大一C語言課程設計
