Что значит ? в С значит? - PullRequest
       3

Что значит ? в С значит?

9 голосов
/ 03 февраля 2011

Что означает вопросительный знак (?) В C?

Ответы [ 8 ]

20 голосов
/ 03 февраля 2011

? - первый символ троичного оператора ?:.

a = (b==0) ? 1 : 0;

a будет иметь значение 1, если b равно 0, и 0 в противном случае.

12 голосов
/ 03 февраля 2011

В дополнение к другим ответам ? может быть частью триграфа .

7 голосов
/ 03 февраля 2011

Это троичный оператор , который условный оператор использует как 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;
4 голосов
/ 03 февраля 2011

Это так называемый условный оператор. Вы можете сократить свой оператор if else с помощью этого оператора.

Следующая ссылка должна объяснить все

http://www.crasseux.com/books/ctutorial/The-question-mark-operator.html

4 голосов
/ 03 февраля 2011

Это, вероятно, часть троичного оператора :

const int numApples = …;
printf("I have %i apple%s.\n", numApples == 1 ? "" : "s");
3 голосов
/ 03 февраля 2011

Это условный оператор.Например, см. Ссылку ниже http://en.wikipedia.org/wiki/Conditional_operator

2 голосов
/ 03 февраля 2011
1 голос
/ 23 января 2016

Скорее всего '?'является троичным оператором.Его грамматика:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...