MISRA-C-:2004 - é误æ示ï¼åçäºå¼å¸¸
MISRA-C-:2004 - é误æ示ï¼åçäºå¼å¸¸
MISRA-C-:2004 - é误æ示ï¼åçäºå¼å¸¸
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
}<br />
return s8a; /* not compliant */<br />
6.10.7 显 式 转 换 ( 强 制 转 换 )<br />
规 则 10.3( 强 制 ):<br />
整 型 复 杂 表 达 式 的 值 只 能 强 制 转 换 到 更 窄 的 类 型 且 与 表 达 式 的 基 本 类<br />
型 具 有 相 同 的 符 号 。<br />
规 则 10.4( 强 制 ): 浮 点 类 型 复 杂 表 达 式 的 值 只 能 强 制 转 换 到 更 窄 的 浮 点 类 型 。<br />
如 果 强 制 转 换 要 用 在 任 何 复 杂 表 达 式 上 , 可 以 应 用 的 转 换 的 类 型 应 该 严 格 限 制 。 如 6.10<br />
节 所 阐 释 的 , 复 杂 表 达 式 的 转 换 经 常 是 混 淆 的 来 源 , 保 持 谨 慎 是 明 智 的 做 法 。 为 了 符 合 这 些<br />
规 则 , 有 必 要 使 用 临 时 变 量 并 引 进 附 加 的 语 句 。<br />
… (float32_t) (f64a + f64b) /* compliant */<br />
… (float64_t) (f32a + f32b) /* not compliant */<br />
… (float64_t) f32a /* compliant */<br />
… (float64_t) (s32a / s32b) /* not compliant */<br />
… (float64_t) (s32a > s32b) /* not compliant */<br />
… (float64_t) s32a / (float32_t) s32b /* compliant */<br />
… (uint32_t) (u16a + u16b) /* not compliant */<br />
… (uint32_t) u16a + u16b /* compliant */<br />
... (uint32_t) u16a + (uint32_t) u16b /* compliant */<br />
... (int16_t) (s32a – 12345) /* compliant */<br />
... (uint8_t) (u16a * u16b) /* compliant */<br />
... (uint16_t) (u8a * u8b) /* not compliant */<br />
... (int16_t) (s32a * s32b) /* compliant */<br />
... (int32_t) (s16a * s16b) /* not compliant */<br />
… (uint16_t) (f64a + f64b) /* not compliant */<br />
… (float32_t) (u16a + u16b) /* not compliant */<br />
… (float64_t) foo1 (u16a + u16b) /* compliant */<br />
… (int32_t) buf16a[u16a + u16b] /* compliant */<br />
规 则 10.5( 强 制 ):<br />
如 果 位 运 算 符 ~ 和 > 4; /* compliant */<br />
result_16 = ( ( uint16_t ) (~(uint16_t) port ) ) >> 4 ; /* compliant */<br />
35