例えば
uint8_t value = 256;
デバッグ出力:
0
ある種の切り捨てを行うと読んだことがありますか?正確な方法はわかりませんが、リンクをいただければ幸いです。
私はあなたと一緒にそれを理解しようとします。
uint8_t
8 ビットのデータ型またはバイトです。1
またはのいずれかになる 8 つのスロットがあります0
。 1111 1111
255 になります。したがって、それに 1 を加算すると、繰り越され続けます。バイナリの 255 + 1 は になります1 0000 0000
が、データ型は 8 ビットしか格納できないため、1 を削除して になり0000 0000
、整数値に変換されます0
。
少なくとも、それが私がそれが機能することを理解している方法です。
符号なし整数型の場合、最小の適切なビット数が変数に格納されます。(ブライアンの答えには、私がここで言うすべてが含まれています。)
たとえば、unsigned char a = 257
になりa=1
ます。
コンパイラ(gcc
この場合)は、そのような割り当てを行うと警告を発するはずですfilename.c:line:column: warning: overflow in implicit constant conversion [-Woverflow]
。