MISRA_C学习_2004_Rule_3.3
Grey
全部学习汇总: https://github.com/GreyZhang/misra_c_hacking
MISRA_C学习_2004_Rule_3.3
- 对于整数的除法,尤其是涉及到正负数相除的时候,相应的行为应该要在文档中写清楚。
- 感觉上,大部分应该都是第一种情况吧?这部分还真就没有认真确认过,接下来做测试看看。
- 比较理想的状态自然是找到两种行为表现的编译器做一个对比。
为了能够看到效果,设计如下测试代码:
#+begin_src c #include <stdio.h> #include <stdint.h>
int main(void) { printf("result is %d, reminder is %d", 5 / 3, 5 % 3); printf("result is %d, reminder is %d", 5 / -3, 5 % -3); return 0; }
#+end_src
gcc测试结果
clang测试结果
从上面的结果看,我常用的编译器看起来行为都是一样的,跟我之前的认识一致。但是,如果后面接触新的编译器的时候,类似的测试还是得做一下。