What does ? in C mean?

后端 未结 8 1338
春和景丽
春和景丽 2020-11-27 20:41

What does a question mark (?) in C mean?

相关标签:
8条回答
  • 2020-11-27 20:57

    That’s probably a part of the ternary operator:

    const int numApples = …;
    printf("I have %i apple%s.\n", numApples == 1 ? "" : "s");
    
    0 讨论(0)
  • 2020-11-27 20:58

    This is a ternary Operator which is conditional operator uses like if-else

    example

    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;
    

    Usage: Syntax of ?: is

    assignment_Variable = Condition ? value_if_true : value_if_false;
    
    0 讨论(0)
  • 2020-11-27 20:59

    It is a conditional operator. For example refer the below link http://en.wikipedia.org/wiki/Conditional_operator

    0 讨论(0)
  • 2020-11-27 21:06

    This is a so called conditional operator. You can shorten your if else statement with this operator.

    The following link should explain everything

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

    0 讨论(0)
  • 2020-11-27 21:16

    Additionally to other answers, ? can be part of a trigraph.

    0 讨论(0)
  • 2020-11-27 21:20

    Most likely the '?' is the ternary operator. Its grammar is:

    RESULT = (COND) ? (STATEMEN IF TRUE) : (STATEMENT IF FALSE)
    

    It is a nice shorthand for the typical if-else statement:

    if (COND) {
        RESULT = (STATEMENT IF TRUE);
    } else {
        RESULT = (STATEMENT IF FALSE);
    

    as it can usually fit on one line and can improve readability.

    Some answers here refer to a trigraph, which is relevant to the C preprocessor. Take a look at this really dumb program, trigraphs.c:

    # /* preprocessor will remove single hash symbols and this comment */
    int main()
    {
        char *t = "??=";
        char *p = "??/"";
        char *s = "??'";
        ??(, ??), ??! ??<, ??>, ??-
        return 0;
    }
    

    invoking only the c preprocessor by running gcc -E -trigraphs trigraph.c the output is

    int main()
    {
     char *t = "#"
     char *p = "\"";
     char *s = "^";
     [, ], | {, }, ~
     return 0;
    }
    

    Hopefully that clarifies a little bit what a trigraphs are, and what a '?' "means" in C.

    0 讨论(0)
提交回复
热议问题