2008-01-28 Cの変数境界値 C ARMのcharの型の話でふと思い出したのですが、こんな問題がありました。 int a,b,c; な変数があったとして、 if (a > b) 〜と c = a - b; if (c > 0) 〜の違いは何か? 別にintじゃなくてもshortでもcharでも構いませんが。 意識しておかないとバグの元になりそうだなーというお話。 ちなみにこの問題によるバグも一因となって、Linuxのrootがとれてしまうlocal exploitが作り込まれてしまったこともあります。