これが期待どおりに機能しないのはなぜですか?
int main()
{
unsigned char louise, peter;
printf("Age of Louise: ");
scanf("%u", &louise);
printf("Age of Peter: ");
scanf("%u", &peter);
printf("Louise: %u\n", louise);
printf("Peter: %u\n", peter);
return 0;
}
出力:
Age of Louise: 12
Age of Peter: 13
Louise: 0
Peter: 13
しかし、変数宣言を交換すると動作します:
unsigned char peter, louise;
出力:
Age of Louise: 12
Age of Peter: 13
Louise: 12
Peter: 13
int
orを使用unsigned int
すると、変数を交換しなくても機能することにも気付きましたが、そうでchar
はありません。
for louiseprintf("%u", louise);
の直後に入れてみましたが、値は正しく保存されています。scanf()
そして、2番目をコメントアウトすると、scanf()
正常に動作します...
「問題」は、Windows (DevCpp) および Linux (kwrite + make) で表示されます。それはコンパイラのバグですか、それとも私のものですか?