何故警告が出るのか教えてください

上の式は警告が出ないのに、下の式は警告が出る理由が分かりません。。。

uint8_t u8_a = 1;

uint8_t u8_b = 1;

uint32_t u32 = 1;

//警告出ない

u8_a = (uint8_t)((u32 & 0x0700) >> 8) +

(uint8_t)(u32 & 0x00ff);

//警告出る

u8_a = (uint8_t)((u32 & 0x0700) >> 8) +

(uint8_t)(u32 & 0x00ff) + u8_b;

Parents Reply Children
  • ありがとうございます。

    まず2つのuint8_tの値がintに拡張されてから、加算が行われるのですね。

    2つの時と3つの時で警告の有無に差がある理由は良く分かりませんが

    2つならコード書く人が意図的にやってるだろう

    3つなら警告しといてあげよう

    くらいの感じでしょうか。わかりませんが。

    とりあえず解決でございます。

    ありがとうございました。