Rule12.2(強制):表達式的值應和標準允許的評估順序一致
例:
X=b[i] + i++;
不同的編譯器給出的結果不一樣,b[i]是否先執行?
應:x=b[i];
i++;
比如:
X=func(i++,i);
Rule12.3(強制):sizeof操作符不能用在包含邊界作用(side effect)的表達式上
例:
Int32_t=i;
Int32_t=j;
j=sizeof(i=1234);
表達式并沒有執行,只是得到表達式類型int的size
Rule 12.4(強制):邏輯操作符&&或者||右邊不能包含邊界作用(side effect)
例:
If(ishight) && (x== i++)),如果ishight=0那么i++不會評估
Rule 12.3(建議):++和- -不能和其他表達式用在一個表達式中
例:
U8a=++u8b + u8c--;
<控制語句表達式>
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/