以下の内容はhttps://shuzo-kino.hateblo.jp/entry/2017/02/14/211957より取得しました。


メモリをケチってchar型でカウンターを作ると

arduinoで動作チェックも兼ねたカウンターを作っておりました。
ここ数年、型を意識しないですむ言語ばかり扱っていたためか、久々にやらかしたのでメモ。
マイナスになる可能性がないカウンターなら、最初から符号なしにしましょう。

実際のところ

char cnt = 0;
char tartget[20] = "";
cnt = 0xff & cnt
sprintf(target, "%02x%s%s", cnt, "12","34");

とかでcharでカウンター回そうとしたら、以下のような挙動

7d
7f
ff80

出力側はsprintfで"%02x"とかやってます。
これは最低桁数を保証してくれるもので、溢れればそのまんま出力されます!
今回は0xffと0x80の組と判断されたみたいですね……
このあたりはちゃんと解析したいトコですが、とりあえずこの場を凌ぐには
unsigned char型にして、符号を排除すれば措定通り80,81...と余計なffがない状態でいけます。




以上の内容はhttps://shuzo-kino.hateblo.jp/entry/2017/02/14/211957より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14