Скорее всего '?'является троичным оператором.Его грамматика:
RESULT = (COND) ? (STATEMEN IF TRUE) : (STATEMENT IF FALSE)
Это хороший сокращенный вариант для типичного оператора if-else:
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;
}
, вызывающую только препроцессор c с помощью команды gcc -E -trigraphs trigraph.c
, которая выдает
int main()
{
char *t = "#"
char *p = "\"";
char *s = "^";
[, ], | {, }, ~
return 0;
}
Надеюсь, это немного прояснитчто такое триграфы и что такое "?"«означает» в C.