C语言中的问号 (?
) 代表什么意思?
?
是?:
条件运算符的第一个符号。
a = (b==0) ? 1 : 0;
如果b等于0,a的值为1,否则为0。除了其他答案之外,?
可以是三字符组合的一部分。
char c = '?'; char const * s = "?"
。 - Thomas Eding这是一个三元运算符,它是一种类似于if-else的条件运算符。
示例
int i=1;
int j=2;
int k;
k= i > j ? i : j;
//which is same as
if(i>j)
k=i;
else
k=j;
用法: ?: 的语法是
assignment_Variable = Condition ? value_if_true : value_if_false;
那可能是三元运算符的一部分:
const int numApples = …;
printf("I have %i apple%s.\n", numApples == 1 ? "" : "s");
http://www.crasseux.com/books/ctutorial/The-question-mark-operator.html
很可能'?'是三元运算符。它的语法如下:
RESULT = (COND) ? (STATEMEN IF TRUE) : (STATEMENT IF FALSE)
if (COND) {
RESULT = (STATEMENT IF TRUE);
} else {
RESULT = (STATEMENT IF FALSE);
trigraphs.c
:# /* preprocessor will remove single hash symbols and this comment */
int main()
{
char *t = "??=";
char *p = "??/"";
char *s = "??'";
??(, ??), ??! ??<, ??>, ??-
return 0;
}
通过运行gcc -E -trigraphs trigraph.c
只调用C预处理器,输出结果如下:
int main()
{
char *t = "#"
char *p = "\"";
char *s = "^";
[, ], | {, }, ~
return 0;
}
?
可以是文本中的问号,也可以是\?
转义序列的一部分,也可以是条件运算符?:
的一部分(此时:
是必需的),或者是三字符组的一部分。所有猜测它是条件运算符的答案都只是猜测。OP没有回答 Rich Turner 在2011年提出的非常合理的澄清请求,所以我认为这个问题无法挽救。 - Lundin