当前位置: 首页 > 知识库问答 >
问题:

三元运算符,如果我避免写“表达式2”,它可以工作,但如果我不写“表达式3”,它给出一个错误

阴元青
2023-03-14

代码

#include<iostream>

int main()
{
    int a=4,b,c;
    a==3 ? : b=a*a ;     // Works fine
    a==4 ? c=a*a : ;     // ERROR Expected Primary expression before ;
}

>

  • 第一条条件语句

    我没有写“表达式2”,但它不会产生错误

    第2个条件语句

    我没有写“表达式3”它给出了一个错误

    那么为什么它在“表达式2”和“表达式3”中有区别呢?

  • 共有1个答案

    须新
    2023-03-14

    这在GNU C/C++中是支持的,称为Elvis运算符。在标准C++中是不允许的(例如MSVC++不支持)。

    在官方文件中有描述

    6.8带省略操作数的条件句条件表达式中的中间操作数可以省略。那么如果第一个操作数是非零的,它的值就是条件表达式的值。

    因此,表达式

    x?:y

    如果非零,则具有x的值;否则,y的值。

    此示例完全等价于

    x?x:y

    在这种简单的情况下,省略中间操作数的能力并不是特别有用。当它变得有用的时候是当第一个操作数确实,或者可能(如果它是宏参数)包含一个副作用的时候。然后在中间重复操作数将执行两次副作用。省略中间操作数使用已经计算的值,而不会产生重新计算的不良影响。

     类似资料:
    • 使用表达式 例5.1 使用表达式 #!/usr/bin/python # Filename: expression.py length =5 breadth =2 area = length * breadth print'Area is', area print'Perimeter is', 2* (length + breadth) (源文件:code/expression.py) 输出 $

    • 根据ISO/IEC 14882:2011,我们不能在三元运算符的第二个和第三个操作数中都使用throw表达式: 5.16条件运算符[expr.cond] 2 如果第二个或第三个操作数的类型为 void,则对第二个和第三个操作数执行左值到右值 (4.1)、数组到指针 (4.2) 和函数到指针 (4.3) 的标准转换,并且以下之一应成立: — 第二个或第三个操作数(但不是两个)是抛出表达式 (15.1

    • 本文向大家介绍Python条件表达式(或“三元运算符”),包括了Python条件表达式(或“三元运算符”)的使用技巧和注意事项,需要的朋友参考一下 示例 三元运算符用于内联条件表达式。最好在易于阅读的简单,简洁的操作中使用。 参数的顺序与许多其他语言(例如C,Ruby,Java等)不同,当不熟悉Python的“令人惊讶”行为的人使用它时,它们可能会导致错误(它们可能会颠倒顺序)。 有些人认为它“笨

    • 问题内容: 我正在使用Java,但出现错误插入“赋值运算符表达式”以完成表达式” 该错误的含义是什么?是否有所有Java错误消息的列表及其含义? 谢谢 问题答案: 根据此页面,您正在执行此操作 编写没有赋值运算符的赋值语句: Eclipse: 语法错误,插入“ AssignmentOperator表达式”以完成表达式 您应该知道编译错误消息与实现有关。以上适用于Eclipse编译器。太阳会说

    • 本文向大家介绍如何编写JSP表达式?,包括了如何编写JSP表达式?的使用技巧和注意事项,需要的朋友参考一下 JSP表达式元素包含一种脚本语言表达式,该脚本语言表达式经过评估,转换为String,并插入该表达式出现在JSP文件中的位置。 由于表达式的值已转换为字符串,因此可以在JSP文件的一行文本中使用表达式,无论是否用HTML标记。 expression元素可以包含根据Java语言规范有效的任何表

    • 你所编写的大多数语句(逻辑行)都包含了表达式(Expressions)。一个表达式的简单例子便是 2+3。表达式可以拆分成运算符(Operators)与操作数(Operands)。 运算符(Operators)是进行某些操作,并且可以用诸如 + 等符号或特殊关键词加以表达的功能。运算符需要一些数据来进行操作,这些数据就被称作操作数(Operands)。在上面的例子中 2 和 3 就是操作数。 运算