c - switch 和 if else 语句的区别

标签 c if-statement switch-statement

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

相关文章:

javascript - else if 语句在第一次迭代之后不会触发

Java - 如果 (Float.isNaN(x))

c - 我怎样才能按这个顺序执行3个线程呢?

c - __write_overflow 声明属性错误

python - 为什么这个 python 逻辑语句的行为与我的预期行为相反?

java - onchildclick 案例声明 android

perl - emacs 中正确的 perl 开关格式

Java/Android : virtual dispatch, switch-case,或数组访问

c - 如何在C中将数字打印为字符串中的字符?

C 程序返回意外值