鱼C论坛

 找回密码
 立即注册
查看: 3047|回复: 3

[已解决]case label does not reduce to an integer constant

[复制链接]
发表于 2019-8-22 20:41:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 一个账号 于 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; 
}
最佳答案
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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-22 22:06:35 | 显示全部楼层
我那个 看不懂 继续说
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-23 10:37:40 | 显示全部楼层
yuesezhenmei 发表于 2019-8-22 22:05
case 后的 +-*/ 换成 1 2 3 4(就是 前面输入进去符号 做标记 为1 2 3 4 )  或者 直接用if

还有把前面 ...

我修改了一下,可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 01:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表