- ブール型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 ...
- ブール型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 ...