vc新手教科书上的问题,应该很简单的,但是就是不会

[复制链接]
查看11 | 回复6 | 2021-1-27 06:45:35 | 显示全部楼层 |阅读模式
#include
voidmain()
{
inta=9,b=8;
intx,y,z;
x=(--a==b++)?--a:++y;
y=b++;
z=--a;
printf("x=%d,y=%d,z=%d\n",x,y,z);
}
说是要求出xyz的值
答案是7,9,6
但是不知道怎么算的,为什么z会等于6我完全不知道啊
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:45:35 | 显示全部楼层
9减了三次1,不等于6,还等于几?莫非阁下发现甚至修改了新的宇宙规则?
回复

使用道具 举报

千问 | 2021-1-27 06:45:35 | 显示全部楼层
新手的话,建议用下调试功能,一步一步的看程序是怎么执行的,vs的话快捷键F5进入debug模式,然后F10一步一步的跟踪看执行了哪些步,自己慢慢调就明白了
回复

使用道具 举报

千问 | 2021-1-27 06:45:35 | 显示全部楼层
进断点一步一步看每个的值就明白了。
另外。。我感觉看这种++--的题不如做几道数学题。。。
回复

使用道具 举报

千问 | 2021-1-27 06:45:35 | 显示全部楼层
--a==>{a=a-1;returna}
b++==>{tmp=b;b=b+1;returntmp}
上面明白就知道为什么了
回复

使用道具 举报

千问 | 2021-1-27 06:45:35 | 显示全部楼层
#include
voidmain()
{
inta=9,b=8;
intx,y,z;
x=(--a==b++)?--a:++y;//先减一次a再比较,所以--a=b++成立,--a(第二次自减),a=7
y=b++;//y=8
z=--a;//z=7再减一次7
printf("x=%d,y=%d,z=%d\n",x,y,z);
}

大概就是这样吧
回复

使用道具 举报

千问 | 2021-1-27 06:45:35 | 显示全部楼层
关于C,C++表达式求值顺序http://blog.csdn.net/fefe82/article/details/37833767,http://bbs.csdn.net/topics/370153775
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行