純粋な ANSI C (C89) では、次のようになります。
unsigned y=<smallnumber>,x=y+3;
printf("%<whatgoeshere>\n",x-y);
%
印刷されることを確実にするために、の後に何を入れます3
か?%u
(両方のオペランドが符号なしの場合、結果は符号なし) と(引数を に渡すときに%d
整数式はに変換されます) の両方の引数をここで見ることができます。int
printf
もちろん、どちらも適切なコンパイラで動作します。これがまさに私がここで質問する理由です。:-) 標準に従って本当に正しいのは 1 つだけだと感じています (ただし、それでさえ間違っている可能性があります)。