我一直在努力处理 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/