2

例えば

uint8_t value = 256;

デバッグ出力:

0

ある種の切り捨てを行うと読んだことがありますか?正確な方法はわかりませんが、リンクをいただければ幸いです。

4

3 に答える 3

3

私はあなたと一緒にそれを理解しようとします。

uint8_t8 ビットのデータ型またはバイトです。1またはのいずれかになる 8 つのスロットがあります01111 1111255 になります。したがって、それに 1 を加算すると、繰り越され続けます。バイナリの 255 + 1 は になります1 0000 0000が、データ型は 8 ビットしか格納できないため、1 を削除して になり0000 0000、整数値に変換されます0

少なくとも、それが私がそれが機能することを理解している方法です。

于 2016-03-29T19:15:17.367 に答える
1

符号なし整数型の場合、最小の適切なビット数が変数に格納されます。(ブライアンの答えには、私がここで言うすべてが含まれています。)

たとえば、unsigned char a = 257になりa=1ます。

コンパイラ(gccこの場合)は、そのような割り当てを行うと警告を発するはずですfilename.c:line:column: warning: overflow in implicit constant conversion [-Woverflow]

于 2016-03-29T19:09:53.280 に答える