Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

メモリをケチって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がない状態でいけます。