一个账号 发表于 2019-8-22 20:41:53

case label does not reduce to an integer constant

本帖最后由 一个账号 于 2019-8-23 10:37 编辑

这个程序编译后报出了这样的错误:case label does not reduce to an integer constant
源代码:
#include <stdio.h>

int main()
{
        char symbol;
        long long int num1, num2;
       
        printf("请输入第一个数:");
        scanf("%lld", &num1);
               
        printf("请输入第二个数:");
        scanf("%lld", &num2);
       
        printf("请输入运算符号:");
        scanf("%c", &symbol);       
               
        switch (symbol)                // 这四个case都有问题
        {
                case "+" : printf("%lld", num1 + num2); break;
                case "-" : printf("%lld", num1 - num2); break;
                case "*" : printf("%lld", num1 * num2); break;
                case "/" : printf("%lld", num1 / num2); break;
                default : printf("输入错误!"); break;
        }

        return 0;
}

yuesezhenmei 发表于 2019-8-22 22:05:20

case 后的 +-*/ 换成 1 2 3 4(就是 前面输入进去符号 做标记 为1 2 3 4 )或者 直接用if

还有把前面一个long去掉
#include <stdio.h>

int main()
{
      char symbol;
      long int num1, num2;
                int a;
      
      printf("请输入第一个数:");
      scanf("%ld", &num1);
               
      printf("请输入第二个数:");
      scanf("%ld", &num2);
                getchar();//记住 需要这个
      printf("请输入运算符号:");
      scanf("%c", &symbol);   
                if(symbol=='+')
                {
                        a=1;
                }
                else if(symbol=='-')
                {
                        a=2;
                }
                else if(symbol=='*')
                {
                        a=3;
                }
                else if(symbol=='/')
                {
                        a=4;
                }
               
      switch (a)                // 这四个case都有问题
      {
                case 1 : printf("%lld", num1 + num2); break;
                case 2 : printf("%lld", num1 - num2); break;
                case 3 : printf("%lld", num1 * num2); break;
                case 4 : printf("%lld", num1 / num2); break;
                default : printf("输入错误!"); break;
      }

      return 0;
}

yuesezhenmei 发表于 2019-8-22 22:06:35

我那个 看不懂 继续说

一个账号 发表于 2019-8-23 10:37:40

yuesezhenmei 发表于 2019-8-22 22:05
case 后的 +-*/ 换成 1 2 3 4(就是 前面输入进去符号 做标记 为1 2 3 4 )或者 直接用if

还有把前面 ...

我修改了一下,可以了
页: [1]
查看完整版本: case label does not reduce to an integer constant