#include <iostream>
using namespace std;
int main()
{
int x = 1, y = 1;
cout << x-- && y--;
system("pause");
return 0;
}
为什么最后的会输出1
你这个x--先使用再自减 左边直接输出x的值了
比如x改为4输出就是4
#include <iostream>
using namespace std;
int main()
{
int x = 4, y = 1;
cout << x-- && y--;
return 0;
}
如果是 cout <<( x-- && y--);那么x--先使用再自减,左边是1,y--先使用再自减,右边也是1,最终与运算还是输出1
couts输出的是一个逻辑表达式的结果,逻辑与&&左右两侧表达式如果都为真,则输出1,否则输出0
x--和y--都是先用x和y当前值进行逻辑计算,因此代码等于:
cout << 1 && 1;
x=x-1;
y=y-1;
因此输出的结果为1,最后x和y值会都变为0
cout << x-- && y--;这句话中, x-- && y--是逻辑运算,x--和y--为后置--,所以,执行过程是
(1) x && y ,x和y都是1,所以x&&y的结果就是真,也就是1,
(2) cout 输出 1,
(3) 然后再执行x--和y--,x和y都变成0