3

私の C コンパイラは、値に単項マイナスを使用すると警告を出したunsignedので、代わりに 0 からの減算を行うことで警告を修正しました。

ここで、現在のコードが元のコードと同等であるかどうか疑問に思います。

uint32_t a, b; // assume b is initialized and non-zero

a =  -b   % b; // old code
a = (0-b) % b; // current code

私の質問は次のとおりです。同じ値の場合b、コードの両方の行で同じ結果が得られaますか?

4

1 に答える 1

3

通常、はい、プラットフォーム上uint32_tで狭いタイプでない限り。次に、最初に昇格さintれ、その型で否定が行われます。

于 2015-04-24T09:28:04.730 に答える