c - 为什么 while 循环中的这条语句从未被执行?

标签 c

我编写了一些代码来右对齐字符字节中的所有位。 但是,应用程序陷入循环,因为它从不执行 positionmask<<1; 行。

为什么会发生这种情况?

void rjustify(char thisChar)
{
    unsigned char c = thisChar;
    unsigned char positionmask = 1;
    unsigned char insertionmask = 1;
    while(positionmask)
    {
            if(c & positionmask)
            {
                    c^=positionmask;
                    c|=insertionmask;
                    insertionmask<<=1;
            }
            positionmask<<1; //This line is never executed.
    }
    printf("%c", &c);
}

最佳答案

当该行被执行时,没有任何效果。打开编译器警告并将其更改为:

   positionmask <<= 1;

关于c - 为什么 while 循环中的这条语句从未被执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15124835/

相关文章:

c - MPI - 发送和接收列

c - 为 LPC1769 Cortex M3 编写 GPIO 中断处理程序

c - 如何使用多个源文件和头文件

c - Linux 3.13 内核模块设置 procfile_read 文件结束条件

c - gtk_label_set_text 内存泄漏

c - 如何用C语言构造ARP请求包

c 字符串数组比较

c++ - API 为 IP 返回 "incorrect"值,但如果您添加 256 或将负数输入 uchar,它就可以工作。发生了什么?

c++ - C wINnet 互联网连接()

C lang 基本问题 - 为什么我得到两个结构的相同地址?