请教一个C语言问题: int i=j=k=-1; i++&&++j||++k||i++;的执行顺序是怎样的? 最后输出i,j,k的值各是多少

我是想知道这条语句运行完了之后,i,j,k的值分别为多少! 答案是: i=1,j=0,k=0

第1个回答  2011-11-26
其实研究这个没啥意思,将运算用括号括起来就可以。追问

我很想知道这个运算的执行顺序,他那个结果是怎么得来的!

追答

int i=j=k=-1;
上一句 说明 i,j k 都是-1

i++ && ++j || ++k || i++;

这个是测试 ++ 放在前面和后面的问题,是先调用++还是不调用++ 变量参与运算的问题,自己查一下书 理解的更深。

追问

自增运算和&& ||放在一起这个的优先级把我弄糊涂了,要不你把结果写出来,我看对不对,然后你给我讲讲你的思路!拜托

追答

(i++) && (++j) || ( ++k) || ( i++)左右 看看书吧

追问

拜托,这个我也知道,但是做出来就是不对

追答

i++ 是先用变量 再加1
i=-1 是真
++j 是先++ 再用j =0 是假
(i++) && (++j) 是0
0|| 1 ||0
所以最后是真

追问

错错

追答

(i++) && (++j) || ( ++k) || ( i++)
i++ 是先用变量 再加1
i=-1 是真

1&&0||0||1
0||0||1
最后还是真

哪里错了???

自己上编译器 编译一下吧,这种问题锻炼不了你的编程能力。
无非是1或0 真和假 先上编译器 编译一下。

本回答被提问者采纳
相似回答