一个初学者的迷茫

hiqrf 2008-03-16 10:00:56
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
int x;
int y;
int z;
x=y=z=-1;
x++&&--y&&z--||--x;
cout<<x<<y<<z;
return 0;
}

大家帮我看看结果,我想不明白...
...全文
480 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
ateen 2008-05-05
  • 打赏
  • 举报
回复
真厉害,学习了~
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
不明LZ在说什么
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
什么呀
tanyongfei520 2008-04-13
  • 打赏
  • 举报
回复
楼上的各位好历害啊
heijita 2008-04-11
  • 打赏
  • 举报
回复
我用VS2005运行了一下 输出的是0 -2 -2
萧城 2008-03-23
  • 打赏
  • 举报
回复
我觉得没必要整这个。
yiqing8854 2008-03-23
  • 打赏
  • 举报
回复
进来学习的! 学习了!! 飘过!!!!!!
jintianfree 2008-03-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 hiqrf 的帖子:]
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
int x;
int y;
int z;
x=y=z=-1;
x++&&--y&&z-- ¦ ¦--x;
cout < <x < <y < <z;
return 0;
}

大家帮我看看结果,我想不明白...
[/Quote]



对于 表达式a && 表达式 b && ...

这样的语句,编译器为了提高效率,当a为假时,便不再执行a后面的语句。很明显,a为假时这条语句就肯定为假了。

对于 表达式a || 表达式 b || ...

这样的语句,一样的道理,当a为真时,不再执行a后面的语句。很明显,a为真时这条语句就肯定为真了。

对于x++,++x

是有区别的,楼上的都说了,就不再细说。
zwl_19851220 2008-03-22
  • 打赏
  • 举报
回复
x++&&--y&&z-- ¦ ¦--x;
x++ 这个表达式的值为-1,真,后续效果,x = 0
--y 这个表达式的值为-2,真,后续效果,y = -2
z-- 这个表达式的值为-1,真,后续效果,y = -2
前面的表达式为真 ,因为逻辑或||
所以--x不计算
最后
0 -2 -2
里面涉及到运算符优先级的问题
waxl0118 2008-03-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 gtqi81 的回复:]
x++&&--y&&z-- ¦ ¦--x;
即(-1)&&(-2)&&(-1) ¦ ¦--x,
++x&&--y&&z-- ¦ ¦--x;
即(0)&&(-2)&&(-1) ¦ ¦--x,
第二个式子运行最后的--x,而第一个式子不运行--x
总结,++x:先自增再进行其他运算,x++:先进行运算再自增
[/Quote]这个说法就是正确的
ilovei821617 2008-03-22
  • 打赏
  • 举报
回复
路过~~~~还没学到!!!
hiqrf 2008-03-22
  • 打赏
  • 举报
回复
谢谢各位呀....
多多帮助呀...
qiaojia596 2008-03-22
  • 打赏
  • 举报
回复
以这个为例我的理解是这样的。错了大家也不见怪,我是初学者。
x++ && ++ y && z-- ¦ ¦ --x;
++或者--是前缀的话是先算再赋值的,++或者--是后缀的话是先赋值再算的。
所以这里是先算++y结果是y=0。
所以&&是与的意思,就是&&两边有一个为假(也就是0)他就显示假,所以就不执行后面的z--而是跳到后面的--x。如果他们的值都不是0的话那就肯定是1所以与的运算继续执行z--而不是跳过去。
我们是从++y那里为0,程序不继续读第二个与关系,而是直接跳到或关系--x。而z--由于处于第二个与关系所以没有运行所以值不变。
所以x=-1,y=0,z=-1。
霍大脚 2008-03-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hiqrf 的回复:]
那你在看看这个吧,


++x&&--y&&z-- ¦ ¦--x;
结果又是什么呀...
[/Quote]

好好研究下逻辑表达式啊
哪个做了后一系列就不继续了,人家说了你不看以后遇到了可能还记不住...
提示:++x=0
c++ primer plus(第五版) 153页
霍大脚 2008-03-19
  • 打赏
  • 举报
回复
好好研究下逻辑表达式啊

c++ primer plus(第五版) 153页
from2008 2008-03-19
  • 打赏
  • 举报
回复
我是新手,学习中~~~
看了办天终于明白了。
转换为 boolean 值时,
0 表示 false;
其它值都被认为是 TRUE;

x++ && ++ y && z-- || --x;
即(-1)&& (0) && (-1 ) || (-1);
所以|| 前为false 所以需要计算再次计算--x(此时经过第一次x++后,x为0);
最后得 x=-1 y=0 z=-1;
不知道 是不是这样理解。
yjxc12894 2008-03-19
  • 打赏
  • 举报
回复
x++&&++y&&z--||--x;
这个是为什么是-1,0,-1;
那个--x好象有执行过?
为什么?
lianqiqi 2008-03-19
  • 打赏
  • 举报
回复
学习中
hiqrf 2008-03-18
  • 打赏
  • 举报
回复
第二个好象不运行--Y吧?呵呵,我试了一下,输出-1,-1,-1
hiqrf 2008-03-17
  • 打赏
  • 举报
回复
谢....
加载更多回复(6)

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧