ページ 1 / 1
if文の条件について
Posted: 2016年10月24日(月) 13:22
by nogu
早速本題なのですが、if文の条件式についての質問です
画像処理について学んでおり、ファイルを用いたプログラムについてで
if(a7_bitp[j],a7){a7_bitp[j]=255;}
の条件の部分(a7_bitp[j],a7)の処理の意味が分かりません
左辺値、右辺値の概念を理解しても、ifの条件としてどう動くのかよくわかりません
よろしくお願いします。
Re: if文の条件について
Posted: 2016年10月24日(月) 14:48
by みけCAT
言語が指定されていないので、C言語と仮定します。
nogu さんが書きました:if(a7_bitp[j],a7){a7_bitp[j]=255;}
の条件の部分(a7_bitp[j],a7)の処理の意味が分かりません
この場合の,はコンマ演算子です。
(関数の引数の区切りなど、コンマ演算子ではない,もあります)
まずコンマ演算子の左辺のa7_bitp[j]が評価されます。
その後右辺のa7が評価されます。 (コンマ演算子の場合、左辺→右辺という評価順序は保証されます)
コンマ演算子の結果は右辺の評価結果となり、左辺の評価結果は捨てられます。
従って、この条件は、a7が0と等しいとみなされる(0やヌルポインタなど)ときは真、そうでない時は偽となります。
【訂正】従って、この条件は、a7が0と等しいとみなされる(0やヌルポインタなど)ようなものではないときは真、0と等しいとみなされる時は偽となります。
ただ、このように(どうせ捨てられる)コンマ演算子の左辺に副作用を持たない式があるのは不自然(コンパイラやオプションによっては警告の対象)なので、何かバグや作者の勘違いがあるかもしれません。
Re: if文の条件について
Posted: 2016年10月24日(月) 18:00
by box
みけCAT さんが書きました:
従って、この条件は、a7が0と等しいとみなされる(0やヌルポインタなど)ときは真、そうでない時は偽となります。
逆のような気がするんですけどね。
0に類する場合はfalse
それ以外は全部true
じゃないんでしょうか。
Re: if文の条件について
Posted: 2016年10月24日(月) 18:32
by みけCAT
box さんが書きました:みけCAT さんが書きました:
従って、この条件は、a7が0と等しいとみなされる(0やヌルポインタなど)ときは真、そうでない時は偽となります。
逆のような気がするんですけどね。
0に類する場合はfalse
それ以外は全部true
じゃないんでしょうか。
あ、逆でしたね…(´・ω・`)
ありがとうございます。