c++ - 为什么具有逻辑和运算符和增量运算符的 c++ 程序给出的输出与预期不同?
问题描述
我正在尝试遵循 C 代码。我认为这段代码的输出应该是 0 0 0 0。但执行后输出为 0 -1 -1 0。任何人都可以解释输出是如何产生的。
#include<iostream>
using namespace std;
int main()
{
int x=-1, y=-1, z=-1;
int w= ++x && ++y && ++z;
cout<<x<<" "<<y<<" "<<z<<" "<<w<<endl;
return 0;
}
解决方案
这是因为操作员的短路行为&&
。++x
评估到0
将被视为false
. 因此, only++x
将被评估,其余表达式将不会被评估,并且表达式的最终值++x && ++y && ++z
将0
被分配给w
.
推荐阅读
- dockerfile - 将环境变量从 GitLab CI/CD 作业传递给 docker 失败
- python - Python CAN isotp 套接字未接收数据,但接收到了 candump
- sql - 在 postgres 中使用 to_tsquery 查找匹配的单词
- python - 为什么 `myfloat in myset` 变得超级慢?
- raku - 将类的运算符定义与其他文件分离并使用它们
- email-validation - Vaadin 14 Flow EmailField Validation 不起作用
- python - 如何修复此 int 在我的代码中不可下标
- react-native - React Native Expo 问题
- imacros - 使用 SET !DATASOURCE 导入完整的 .txt 不仅是 imacros 上的某些行
- javascript - 使用正则表达式搜索和替换 - 匹配大小写 - JavaScript