cxf*_*f54 7 c++ operator-precedence
为了让事情更有意义,基本上针对以下两种情况。
我以某种方式想象它们是相似的,首先是右手边。
但是“=”只是传递值
“==”返回比较结果“true”,然后转换为1。
所以他们实际上并不相似?
int hehe = haha = 3;
int hehe = haha == 3;
Run Code Online (Sandbox Code Playgroud)
//----------------------------------------------
对于下面的代码,你能解释一下为什么 haha 和 hehe 都是 3 吗?
我知道赋值是右结合的。所以 haha 首先分配了 3。
但是为什么 (haha = 3) 的结果不是 1 表示操作成功了呢?相反,3 一直传播到哈哈?这两种类型的术语是什么:3 一路传播 vs 某些操作成功。
int haha;
int hehe = haha = 3;
cout << haha << hehe;
Run Code Online (Sandbox Code Playgroud)
但为什么(哈哈=3)的结果不是1表示操作成功呢?
因为 C++ 语言规范并不是这么说的。相反,赋值的结果是所分配的值。在这种情况下haha = 3评估为3。
在 C++ 中,对于内置运算符,我们从来没有“此操作成功”。在某些情况下,当您错误地使用运算符时,编译器会给出错误。但是,如果编译器找不到任何错误,它只会假设您知道自己在做什么。
| 归档时间: |
|
| 查看次数: |
170 次 |
| 最近记录: |