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--;
<控制语句表达式>
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/