首先使用哪个运算符
Which operator is used first?
本文关键字:运算符 更新时间:2023-10-16
我刚刚在c++课上做了一个测试,我做错的一个问题是:
看下面的陈述。而(x++<10)首先使用哪个运算符?
我的答案是++,但测试告诉我它实际上是<。有人能解释一下为什么会这样吗?
你说得对。CCD_ 1具有比CCD_ 2更高的优先级。
C++运算符优先级
因此,在这种情况下,将首先调用operator++
,然后返回原始值(在增量之前),该值将用于比较。
实时
我怀疑这是因为x++
是后增量。所以你可以说,它首先将x与10进行比较,然后将x与相加
如果是++x
,那么添加将首先完成。
我认为这是一个有点技巧的问题,因为就运算符优先级而言,++
的优先级高于<
。
当x
是具有用户定义后缀operator++
的类型时,必须首先评估operator++
0。
对于内置类型的x
,我不确定是否可以对订购进行说明。
这是优先级顺序。
1 Parenthesis () []
2 Structure Access . ->
3 Unary ! ++ -- * &
4 Multiply,Divide,Modulus * / %
5 Add,Subtract + -
6 Shift Right,Left >> <<
7 Greater,Less than etc > < => <=
8 Equal , Not Equal == !=
9 Bitwise AND &
10 Bitwise OR |
11 Logical AND &&
12 Logical OR ||
13 Conditional Expression ? :
14 Assignment = += -= etc
15 comma .
相关文章:
- 为什么比较运算符如此快速
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 使用C++中的模板和运算符重载执行矩阵运算
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 增量运算符与后缀混淆
- 一个关于在C++中重载布尔运算符的问题
- 运算符C++ "delete []"仅删除 2 个前值
- 模板类无法识别友元运算符
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 关闭||运算符优化
- 通过继承类使用来自不同命名空间的运算符
- C++Cast运算符过载
- 如何使用AngelScript注册SFML Vector2运算符
- 重载元组索引运算符-C++
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 布尔比较运算符是如何在C++中工作的
- 重载运算符new[]的行为取决于析构函数
- 如何防止clang格式在流运算符调用之间添加换行符<<