C语言里if((i=!i)!

学习 时间:2026-04-01 08:41:57 阅读:7483
C语言里if((i=!i)!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是指的什么啊?记录哪个的?

最佳回答

英勇的犀牛

耍酷的热狗

2026-04-01 08:41:57

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,然后判断······一直到循环结束。

最新回答共有2条回答

  • 温暖的水杯
    回复
    2026-04-01 08:41:57

    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,然后判断······一直到循环结束。

上一篇 闻一多《色彩》阅读题生命是张没有价值的白纸,自从绿给我发展,红给了我热情,黄教我忠义,紫教我高洁,粉红赐我以希望,灰白赠

下一篇 求坐标。某地以东是西经。以西是东经。以南有阳光直射井底。以 北四季分明。求坐标。