gpt4 book ai didi

c - switch 和 if else 语句的区别

转载 作者:太空宇宙 更新时间:2023-11-04 03:40:17 25 4
gpt4 key购买 nike

我一直在努力处理 if else 语句,并决定尝试使用 switch 语句进行同样的操作,由于某种原因它碰巧可以工作,现在我的程序可以正常工作了。但这让我想知道这两个代码之间有什么不同。 . 在我看来,它们都应该工作,但由于某种原因不能..

如果:

   if (nibbleState = UNPACK_WAIT_FOR_1ST_NIBBLE)
{
if ((code = isUnPackedItem(nb)) == UNPACKED_ITEM)
{
nibbleState = UNPACK_WAIT_FOR_2ND_NIBBLE;
}
else
{
putc(code, fpOut);
++byteOutCnt;
}
}
else if (nibbleState = UNPACK_WAIT_FOR_2ND_NIBBLE)
{
nibbleState = nb;
nibbleState = UNPACK_WAIT_FOR_3RD_NIBBLE;
}
else if (nibbleState = UNPACK_WAIT_FOR_3RD_NIBBLE)
{
nibbleLow = nb;
putc((nibbleMid << 4 | nibbleLow, fpOut);
nibbleState = UNPACK_WAIT_FOR_1ST_NIBBLE;
++byteOutCnt;
}

切换:

switch (nibbleState)
{
case UNPACK_WAIT_FOR_1ST_NIBBLE:
if ((code = isUnPackedItem(nb)) == UNPACKED_ITEM)
{

nibbleState = UNPACK_WAIT_FOR_2ND_NIBBLE;
}
else
{
putc(code, fpOut);
++byteOutCnt;
}
break;
case UNPACK_WAIT_FOR_2ND_NIBBLE:
nibbleMid = nb;
nibbleState = UNPACK_WAIT_FOR_3RD_NIBBLE;
break;
case UNPACK_WAIT_FOR_3RD_NIBBLE:
nibbleLow = nb;
putc((nibbleMid << 4) | nibbleLow, fpOut);
nibbleState = UNPACK_WAIT_FOR_1ST_NIBBLE;
++byteOutCnt;
break;
}

最佳答案

在检查 if 语句中的条件时,我们必须使用 == 运算符检查条件是否相等。但是您正在将 UNPACK_WAIT_FOR_1ST_NIBBLE 的值分配给 nibbleState。这不是条件。你必须检查条件为

         if (nibbleState == UNPACK_WAIT_FOR_1ST_NIBBLE) //condition to check whether both are equal.

关于c - switch 和 if else 语句的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29231696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com