0

我正在使用 C 代码开发一个项目,并尝试使用三元 if 语句,但它总是返回 false,我不明白为什么。

三元 if 语句是:

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

我想要做的是如果reportParameterArray[P_TARGET]不等于 \0 那么它应该输出实际值,否则它会打印你好。但目前它总是打印HELLO

当我调试时,我可以看到该值为 \0,因此它应该打印“HELLO”但是当有实际值时它仍然打印 HELLO 而不是 reportParameterArray [P_TARGET] 的实际值。

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

正如其他答案所说,您的条件是倒退的。但是您也在将 achar*与 a进行比较char。您想检查字符串中的第一个字符,如下所示:

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

这当然是假设您要检查一个空字符串,而不是一个不存在的字符串。

于 2013-05-22T09:26:24.153 回答
2

你应该检查

(reportParameterArray[P_TARGET] == NULL)

因为与

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

您正在将 char 指针与 char 进行比较。

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

实际上没问题 - '\0' 是一个零整数值,在这种情况下被评估为一个空指针常量,但如果你的意思是 NULL,就说 NULL

于 2013-05-22T09:38:33.087 回答
1

您的三元运算符表达式是向后的。你的意思是:

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

或者:

(reportParameterArray[P_TARGET] == '\0') ? "HELLO" : reportParameterArray[P_TARGET]
于 2013-05-22T09:15:15.323 回答