为什么这个if语句的功能跟我知道的不一样?

#include <stdio.h>
int main(void)
{
    char ch;


    while ((ch = getchar()) != '#')
    {
        if (ch != '\n')
        {
            printf("1\n");
            if (ch = 'q')
            {
                printf("2\n");
                printf("3\n");
            }
            else if (ch = 'c')
                continue;

            else if (ch = 'g')
                printf("3\n");

            else if(ch = 'b')
                break;

        }

    }
    printf("done\n");

    return 0;
}

我想要的是输入q打出

1

2

3

输入c打出

1

输入g打出

1

3

输入b只打出

1

done

望大神指教啊!

 

>    if (ch = 'q')

 

当要表达 相等 的关系, 要用  ==