C语言里if((i=!i)!=0)什么意思

voidf31(stack*S){QueueQ;StackT;inti=0;InitQueue(&Q);InitStack(&T);While(!StackEmpty(S... void f31 (stack *S)
{
Queue Q;
Stack T;
int i=0;
InitQueue(&Q);
InitStack(&T);
While(!StackEmpty(S))
if((i=!i)!=0) Push(&T,Pop(S));
else EnQueue(&Q,Pop(S));
......

其中i指什么?书上说是S元素出栈,奇数入栈T,偶数入队Q,是这样吗?
谢谢你的回答,但是i是指的什么啊?记录哪个的?
展开
 我来答
mao668316
2010-12-29 · TA获得超过247个赞
知道小有建树答主
回答量:144
采纳率:0%
帮助的人:181万
展开全部
if((i=!i)!=0)意思是:
首先将i取非(计算机以二进制表示,其中0通常代表假,1代表真),然后赋值给i,再判断是否等于0,若不等于0则执行Push(&T,Pop(S));
否则执行EnQueue(&Q,Pop(S));

因为i的初值是0故第一步判断后执行Push(&T,Pop(S))
第二步执行EnQueue(&Q,Pop(S));
所以书上说的正确。
仅供参考!

不好意思先前的回答有点问题,现在改了。
这里的i其实没有记录数据,它的作用是:
第一次循环:其初值0,然后取非变为1;然后if语句判断是否为零。(显然第一次)
第二次时i的值已经变为1了,然后取非变为0,然后判断······
一直到循环结束。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式