MISRA C:2012 8 Rules 8.1 A Standard C environment

Posted focus-z

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MISRA C:2012 8 Rules 8.1 A Standard C environment相关的知识,希望对你有一定的参考价值。

8.1 

程序不得违反标准C语法和约束,不得超出实现的转换限制

0232  十六进制转义序列的值在“unsigned char”类型中无法表示。

int ia = \x4142;                    /* Message 0232 */

char 字符常量只有1个Byte大小(不考虑宽字符常量),‘\x4142’ = 16706, 超过范围了。 0-255

十六进制转义序列的值不得超过unsigned char中可表示的值的范围.

char 类型用于存储字母和标点符号之类的字符,但是在技术实现上char却是整数类型,这是因为char类型实际存储的是整数而不是字符

char grade  = ‘A‘ ;

char grade = 65; // 这是一种不好的编程风格

令人奇怪的是,C将字符常量视为int类型而非char类型

 

以上是关于MISRA C:2012 8 Rules 8.1 A Standard C environment的主要内容,如果未能解决你的问题,请参考以下文章

MISRA C:2012 Dir-1.1(只记录常犯的错误和常用的规则)Bit-fields inlineC99,NOT support in C90 #pragma

为啥 MISRA-C 在某些情况下不允许隐式扩展类型?

cppcheck,内联抑制如何与 misra 插件一起使用

为啥 MISRA-C 检查器提供错误检查 STM32 HAL?

C中的MISRA增量

Misra 2012 背后的基本原理不允许在不同指针之间进行转换