ブール型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;
最終更新:
2008-06-25 16:44
改訂:
1.1
評価点数:0 (0 件の投票)
Chuck Norris has counted to infinity. Twice.

このカテゴリー内のレコード

タグ