0

私は C コード内でプロジェクトに取り組んでおり、三項の if ステートメントを使用しようとしていますが、常に false を返し、その理由がわかりません。

三項if文は次のとおりです。

(reportParameterArray[P_TARGET] == '\0') ? reportParameterArray[P_TARGET] : "HELLO"

私がやろうとしているのは、reportParameterArray[P_TARGET]\0 に等しくない場合、実際の値を出力する必要があることです。それ以外の場合は、hello を出力します。しかし、現時点では常に印刷されHELLOます。

デバッグすると、値が \0 であるため、「HELLO」と出力されるはずですが、実際の値がある場合でも、reportParameterArray[P_TARGET] の実際の値ではなく、HELLO と出力されます。

reportParameterArray[P_TARGET] は char** 型です

ご協力いただきありがとうございます。

4

4 に答える 4

3

三項演算は次の形式を取ります

condition ? when true : when false;

例えば

(var == 2) ? "Var equals 2!" : "Var doesn't equal 2!";

したがって、あなたの状態は後方にあります。

于 2013-05-22T09:15:59.483 に答える
2

チェックする必要があります

(reportParameterArray[P_TARGET] == NULL)

なぜなら、

(reportParameterArray[P_TARGET] == '\0') 

char ポインターを char と比較しています。

(*reportParameterArray[P_TARGET] == '\0')

実際には問題ありません - '\0' はゼロの整数値であり、このコンテキストではヌル ポインター定数として評価されますが、NULL を意味する場合は NULL とだけ言ってください。

于 2013-05-22T09:38:33.087 に答える
2

他の答えが言ったように、あなたの条件は逆です。しかし、あなたは a と a を比較しchar*ていcharます。次のように、文字列の最初の文字を確認します。

(reportParameterArray[P_TARGET][0] != '\0') ? reportParameterArray[P_TARGET] : "HELLO"

これはもちろん、存在しない文字列ではなく、空の文字列をチェックすることを前提としています。

于 2013-05-22T09:26:24.153 に答える