C语言中迷惑又简单的问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 16:09:37
设X=1,Y=0,Z=2均为int型…执行下列语句后X,Y,Z的值为 Y++&&++Z||++X 答案是X=2,y=1,z=2 自加符不是先运行吗?…而且是从右到左…如果是这样的话应该是先将X,Y,Z加一…再判断逻辑运算符…请问我哪错了
置前是指字母在前还是++号在前?

自加运算有两种,如上:置前和置后;
如果是置前的必须在&&或||之前进行自加运算;
而如果是置后的就会在&&或||运算完之后才会自加,
在当条语句中不会进行自加;
只有在当条语句运行完以后才会自加;
但你的这句语句为逻辑参与的语句
计算过程应该是:
先判断Y,由于Y等于零,而&&两边都不能有零,有零即假.所以,&&联结的语句并不执行,而执行||后面的:即对X进行自加运算.
而执行完上面的整条语句后,就会对Y进行自加运算.
所以出现了Z没有进行自加运算的情况
过程应该为:
判断Y是否非零
是零
所以不再运算,跳到||后的语句
运行X的自加运算
再运行Y的自加运算
完毕
我觉得我说得够清楚了,你应该明白了吧?呵呵

很多年没接触了,有点忘记了,自加的确是先运算的,但是++Z是运算之前+1。而Y++是运算之后+1这一点你要搞清。还有& ||这个东西的运算先后什么的再看看,好几年没接触了,实在抱歉!