【问题标题】:I don't know how the colon and question mark works in this code [duplicate]我不知道冒号和问号在这段代码中是如何工作的[重复]
【发布时间】:2021-01-16 17:51:03
【问题描述】:

int main(void) 
{ 
    int arr[] = { 2, 3, 4, 10, 40 }; 
    int n = sizeof(arr) / sizeof(arr[0]); 
    int x = 2; 
    int result = binarySearch(arr, 0, n - 1, x); 
    (result == -1) ? printf("Element is not present in array") 
                   : printf("Element is present at index %d", 
                            result); 
    return 0; 
} 

所以在 (result==-1) 旁边是 ?和 : 。现在我以前从未见过这些东西,也不知道它们是如何工作的,它们是像 True of false statements 还是像 switch-cases?

【问题讨论】:

  • 这不是一个教程网站。
  • ?: 用于将值返回给表达式。他们在这里所做的是做一个 if 语句,然后故意混淆它而没有任何好处。如果它可以以更易读的方式完成,那么它应该是。我不会称这是最易读的方式...

标签: c


【解决方案1】:

这些是三元运算符,if...else 的快速简写:

(condition) ? value_if_true : value_if_false

【讨论】:

  • 这不是一个教程网站。
【解决方案2】:

它调用三元运算符。 if-else 等价

if(result == -1) 
    printf("Element is not present in array") ;
else
    printf("Element is present at index %d",  result); 

这并不意味着你可以这样写所有东西。之后的每个语句?标记必须返回一个值。 Printf 函数 teturns int,它打印的字符数。因此这是有效的。如果你传递一个 void 函数,你会看到编译错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-28
    • 2021-10-11
    • 2017-08-04
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多