たてたてよこよこまるかいてちょん

組み込み関連の情報を共有するためのブログです

8でわった余りは?

以下のような switch 文があった。
foo.bar の型は unsigned char だったはず。
この値は、8でわった余りだから 0から7になる、数学的には。

switch( (foo.bar--)%8){
  case 0: x=1 ; break;
  case 1: x=3 ; break;
  case 2: x=5 ; break;
  case 3: x=7 ; break;
  case 4: x=9 ; break;
  case 5: x=2 ; break;
  case 6: x=8 ; break;
  case 7: x=4 ; break;
  default: x=0; break;
}

default句は通らないはずなんだが、通った。

どうしてかだって?さあね、知らないよ。コンパイラのバグなんじゃないの。
あんまり信用してはいけないみたいだね。この製品。

記事のLicense このブログの記事は特に断りのない限り、引用部分を除いて、以下の CC-BY 4.0でライセンスします。 https://creativecommons.org/licenses/by/4.0/deed.ja ただし、ブログ内にあるコードは、特に断りのない限り、CC-BY 4.0またはMITLicense で利用できるものとします。