C言語ファンクションの戻り値はTRUEかFALSEになるが、CソースではTRUE,FALSEをどのように表現するのか?


値の定義
    TRUEは(unsigned long)1
    FALSEは(unsigned long)0
    です。

ありがちなミス

例えば、0をFALSE,0以外をTRUEとプログラムしてしまう場合があります。

この場合、ISaGRAFのデバッガには

  • 0.......FALSE
  • 0以外...TRUE

と表示され、一見うまく動作しているように見えます。

しかし、ISaGRAFのターゲット内部ではそうではありません。

0でもなく1でもない値は,TRUEでもなくFALSEでもありませんので問題が起きる場合があります。

例えば、下記のような場合、2つの条件判断はいずれも成立しません。

a:= testfunc(); (* (unsigned long)で0と1以外の値を返すファンクション *)
IF a = TRUE then
    (* 処理1 *)
ELSE IF a = FALSE then
    (* 処理2 *)
END_IF;
最終更新:
2011-05-31 16:29
改訂:
1.0
評価点数:0 (0 件の投票)
Chuck Norris has counted to infinity. Twice.