組み込み技術を向上したい!!

でも組み込み以外にも手を出し始めました・・・

if文でのバグをほんの少し減らすかもしれない方法 @C言語

プログラムの基礎はわかってるつもりです。
それでも一人で何万行、何十万行と書いていると
思いもよらないバグに遭遇してしまいます。
まぁ、ひとりじゃなくてもなるんでしょうけど。

そのバグを少しでも減らそうと日々努力しております。

もうご存知の方も居られるかと思いますが、

if(定数==変数)
{
 /*何か処理*/
}

で記述するという方法です。定数を左にもってくるということですね。

例えば、↓みたいなミスを防いでくれます。

int a;
if ( a = 3 )
{
 /*何か処理*/
}

おそらく書いた意図は「aと3が等しかったら」というものです。

しかし、実際はそうではなく、a = 3なので、たぶん常にtrueです。
(処理系によるのかな??)

コンパイラが適切にワーニングやエラーで処理してくれると良いですが、
あんまり詳しくないけど、その辺が細かくないコンパイラもいるんじゃないかな。

ここで↓のように記述してみます。

int a;
if( 3 = a )
{
 /*何か処理*/
}

これだとコンパイラがエラーと判断してくれます。

もちろんif ( a == 3 )if ( 3 == a )
は同等の処理を行います。

個人的にはif ( a == 3 )のほうが可読性は良いと思いますが、
間違いなく意図どおりに動くことが最優先だと思うので、
仕方ないかなぁって思ってます。

 いやぁホントにバグっていやですよね。何か問題が起きたとき、原因がわからないのが一番困ります。原因がわかれば、おそらくそれは解決にとても近い位置にいるというこでしょう。

「プログラムは思ったとおりに動くんじゃない。書いたとおりに動くんだ。」

というような話がありますが、その通りですね。

では Good Luck オレ!!