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,是这样吗? 展开
 我来答
归容苦芳林
2020-07-15 · TA获得超过3831个赞
知道大有可为答主
回答量:3209
采纳率:28%
帮助的人:259万
展开全部
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

提交
取消

辅 助

模 式