|
setup diary |
char abs(char v){ if(v<0){v=-v;} return v; }しばらく機械語から遠ざかっていたので、気がつくのが遅れたが、これではうまくいかない場合がある。charでは、-128から127までの整数を表現することができる。そして、マイナスをつけるときには、0x100-vという計算がされる。-128は0b10000000と表現されるが、これにマイナスをつけると、0b10000000となり、128ではなく-128となってしまう。つまり、-128以外はうまく働くが、-128だけはダメなのだ。まあ、少しずつCを思い出していこう。