29.11.2014 Views

MISRA-C-:2004 - 错误提示:发生了异常

MISRA-C-:2004 - 错误提示:发生了异常

MISRA-C-:2004 - 错误提示:发生了异常

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!