此篇博文用于记录c语言的一些基础特性。
测试环境
gcc version 8.1.0 (x86_64-win32-sjlj-rev0, Built by MinGW-W64 project)
枚举类型测试
MISRA Rule 10.1 Operands shall not be of an inappropriate essential type
其中关于枚举类型操作数有以下说明:
枚举型的操作数不应在算术运算中使用,因为枚举对象使用实现定义的整数类型,枚举型是否有符号依赖于编译环境。因此,涉及枚举对象的操作可能会产生意外类型的结果。
请注意,来自匿名枚举的枚举常量的基本类型为有符号型。
测试过程及结果如下:
1 | #include <stdio.h> |
另关于"匿名枚举的枚举常量的基本类型为有符号型",暂未想到怎么来测试验证,留后补充.
Note:
嵌入式交叉编译器通常可以配置enum的基本类型,故为了提升代码的可移植性,应遵循MISRA的相关建议,不应依赖于编译器实现.
float类型
浮点类型的实现可能对程序行为产生重大影响,例如:
◆ 值的范围及其存储的精度;
◆ 浮点运算后的取整方向;
◆ 转换为较窄的浮点类型或整数类型时的取整方向;
◆ 下溢,下溢和非数值存在的行为;(NaNs <-> Not-a-Numbers)
◆ 库函数的定义域和值域错误的事件的行为
float中的特殊值及其16进制值
+0 : 0x00000000
-0 : 0x80000000
Infinity : 0x7F800000
-Infinity : 0xFF800000
NaN : 0x7F800001~0x7FFFFFFF,0xFF800001~0xFFFFFFFF
发现一个关于float类型测试的网站: https://www.h-schmidt.net/FloatConverter/IEEE754.html
如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !