C编程-带开关语句错误的左移

C编程-带开关语句错误的左移,c,switch-statement,C,Switch Statement,我试图在switch语句中实现移位运算符,但在获取输出时遇到了问题。 我试着做一个简单的左移,比如'12。op是一个字符,它怎么可能与这两个字符中的任何一个相等呢?在代码中op包含值0。您正在打开值op,该值从未分配过除0以外的值 单引号也用于字符“switch语句的控件,op必须等于switch语句的案例之一,案例才能运行。由于op被初始化为0并且没有更改,因此它永远不会等于'>'或'您没有在循环中设置op或更改iCont,您可能不想将char变量与2字符文本进行比较。欢迎使用StackOve

我试图在switch语句中实现移位运算符,但在获取输出时遇到了问题。
我试着做一个简单的左移,比如'12
op
是一个字符,它怎么可能与这两个字符中的任何一个相等呢?

在代码中
op
包含值
0
。您正在打开值op,该值从未分配过除0以外的值


单引号也用于字符
“switch语句的控件,
op
必须等于switch语句的案例之一,案例才能运行。由于
op
被初始化为0并且没有更改,因此它永远不会等于
'>'
'您没有在循环中设置
op
或更改
iCont
,您可能不想将
char
变量与2字符文本进行比较。欢迎使用StackOverflow。虽然很高兴你发布了你的代码(并且不厌其烦地正确格式化了它-谢谢!),但你真的没有问任何问题。你说“我很难获得输出”,但你没有说“麻烦”是什么意思。既然我们没有,如果你解释一下你遇到了什么“麻烦”,什么“不起作用”,或者什么“错误”是明确的,这会有帮助。问题在哪里?有人偷了这个问题吗我已经回复了你的问题。请不要发布问题,然后删除其内容(即使问题本可以问得更好)。这样做会使现有答案变得毫无意义,并破坏可搜索性。实际上,
。@KeithThompson这就是为什么我没有说这是一个错误,只是没有多大意义:)这实际上不是问题所在(问题是
op
被初始化为
0
,然后在代码中从未更改),但它也不能真正成为一个答案(因为它不是——这是一个你在海报上问的问题)。没有否决权-只是说“.”:-)@肯怀特:他问为什么他的代码不起作用。代码中任何足以阻止其工作的缺陷都是可以接受的答案。那
我想我不同意。:-)问题在于
op
设置为零且从未更改,但用于确定
开关的路径;如果你永远无法到达那个点,那么开关中的分支所包含的内容是毫无意义的。“即使寄到法国巴黎A街
1号,邮件也永远不会送到我家。”。“但你住在英格兰的伦敦。”。“那么?它的地址是
1 A Street
”@KenWhite:此代码存在多个问题。即使
op
已正确初始化,它仍然无法与
开关
语句匹配。不理解如何为开关/大小写指定字符常量是对该语言的根本误解。修复
op
的初始化是重新安排泰坦尼克号上的躺椅。不合逻辑的开关/案例是冰山一角。(想想一个有经验的程序员可能会犯什么错误,并经常进行调试,这表明存在误解。)我的观点是,无论其他问题是什么,如果代码永远无法到达那里,它们都无关紧要。想想我的最后一句话——如果他们把你的姓拼错了,如果你再也看不到的话,那也没关系。解释一下你的意思:“
op
,也就是字符,怎么可能等于你分配给它的零以外的任何东西,而且从来没有改变过?”我理解你所说的‘你不想比较字符(op)’”对于MC constance,在本例中是“我不太确定在将op更改为int.Good后,您何时说‘在代码中的某个地方设置op’”。那么,您发布的代码到底有什么问题?我们如何帮助您解决?
#include <stdio.h>

void shift(){
    char op = 0;
    int x = 0;
    int y = 0;
    char buffer[1024];
    int iCont = -1;
    char c1 = 0;
    char c2 = 0;

    do
    {
        printf("\ninput: ");
        fgets(buffer, sizeof(buffer), stdin);
        if (sscanf(buffer, "%d %c%c %d", &x, &c1, &c2, &y)){}
            switch (op)
            {
            case '<<': printf("%d %c1%c %d = %d", x, c1, c2, y, x << y);
                break;
            case '>>': printf("%d %c1%c %d = %d", x, c1, c2, y, x >> y);
            default:
                break;
            }
        } while (iCont);

}
switch(op)
{ case 0: //left shift
break;
case 1: //right shift
break;}