c++上的问题

来源:百度知道 编辑:UC知道 时间:2024/05/02 20:06:08
#include<iostream.h>
void main()
{
int a,b,c;
a=b=c=8;
!a&&b++&&c;
cout<<a<<','<<b<<','<<c<<endl;
a||--b||c--;
cout<<a<<','<<b<<','<<c<<endl;
a-8&&--b||c||b++;
cout<<a<<','<<b<<','<<c<<endl;
--a||b&&c||++b;
cout<<a<<','<<b<<','<<c<endl;
}
输出是 8,8,8
8,8,8
8,8,8
7,8,8
这是以我自己的理解得出的:
!a&&b++&&c 0
a||--b||c-- 1
a-8&&--b||c||b++ 1
--a||b&&c||++b 1
但是不知道他们与a,b,c的输出有什么联系,如果有联系,那b++,--b,c--,++b,--a都可以依次得出b=9,b=7,c=7,b=9,a=7的。
希望高手指点一下,让我在c语言上有点进步!谢谢了!

这个题考的不是++,--
而是考你&&和||

C编译器有优化算法,
当 a && b 的a 为 false时,不计算后面的b
当 a || b 的a 为 true 时,不计算后面的b

第一行 !a 为false 所以 b++ 根本没有执行
后面同理

加油~

&&是与的意思 如果其中一项都不成立那么着个判断不成立,不 执行下边的运算.
||是或的意思 如果||的前一项不成立可选择后边的判断,只有||前后的判断都不成立,下边的运算才不会执行.

先弄明白,优先级的问题。