|
|
1
74
它等于
逗号运算符的优先级低于赋值。 |
|
|
2
122
注意,逗号运算符可能在C++中被重载。因此,实际行为可能与预期行为非常不同。 作为一个例子, Boost.Spirit 非常巧妙地使用逗号运算符实现符号表的列表初始值设定项。因此,它使以下语法成为可能和有意义的:
请注意,由于运算符优先级的原因,代码是(有意!)相同的
也就是说,第一个被调用的运算符是
|
|
|
3
118
逗号运算符具有 最低的 所有C/C++操作符的优先级。因此,它始终是最后一个绑定到表达式的表达式,这意味着:
相当于:
另一个有趣的事实是逗号运算符引入了 sequence point . 这意味着表达式:
保证有三个子表达式( A+B , C() 和 D )按顺序评估。如果它们有副作用,这是很重要的。通常情况下,编译器可以按其认为合适的顺序计算子表达式;例如,在函数调用中:
参数可以按任意顺序计算。注意,函数调用中的逗号是 不 运算符;它们是分隔符。 |
|
|
4
60
逗号运算符:
逗号运算符的默认版本是为所有类型(内置和自定义)定义的,其工作方式如下-给定
对于大多数运算符,编译器可以选择执行顺序,如果不影响最终结果,甚至需要跳过执行。
实际上,默认的逗号运算符的工作方式几乎与分号相同。不同之处在于,用分号分隔的两个表达式构成两个单独的语句,而逗号分隔则将所有表达式保持为单个表达式。这就是为什么在以下场景中有时使用逗号运算符的原因:
当语句不是表达式时,分号不能替换为逗号。例如,这些是不允许的:
在您的案例中,我们有:
请注意,并非每个逗号实际上都是逗号运算符。一些逗号的含义完全不同:
* 如果应用优化,这并不完全正确。如果编译器认识到某段代码对其余部分绝对没有影响,它将删除不必要的语句。 |
|
5
37
价值
A等于
|
|
|
6
8
B的值将分配给A。 C不会发生什么事 |
|
7
2
a的值将等于b,因为逗号运算符的优先级低于赋值运算符。 |
|
|
8
2
是逗号运算符的优先级低于赋值运算符
输出:i=3
Ouput:我=1
|
|
|
9
-2
首先要做的是: 逗号实际上不是一个运算符,对于编译器来说,它只是一个有意义的标记。 在上下文中 其他代币。 这意味着什么?为什么要麻烦?例1: 为了理解同一个标记在不同上下文中的含义之间的差异,我们来看一个示例:
通常C++初学者会认为这个表达式可以比较事物,但它绝对是错误的。
上面例子的正确解释当然是模板的一个实例。 例2: 当我们编写一个具有多个初始化变量和/或多个表达式的典型for循环时,我们也使用逗号:
逗号的含义取决于使用上下文,这里是
逗号在上下文中的实际含义是什么?更复杂的是(通常在C++中)逗号运算符本身可以重载(感谢 Konrad Rudolph 为了指出这点)。 回到问题上来,代码
对编译器的意义类似于
因为
priority
的
这在上下文中被解释为
(注意,解释取决于上下文,这里既不是函数/方法调用,也不是模板实例。) |