为什么在切换情况下不能使用字符?

问题描述 投票:0回答:2

我必须制作一个可以根据用户输入进行特定操作的计算器。输入的第一位必须是某种运算符(+-*等),然后在代码检查其中哪些是用户的choice之后。我将这些运算符声明为char,但是我的代码编辑器说我不能将char变量作为case语句...我该怎么办?代码:

#include <stdio.h>
#include <math.h>

int main(){
char choice = "+", "*", "-", "/";
int a, b;
float outcome;

scanf("%c", &choice);

switch (choice)
{
    case "+":
        scanf("d% d%", &a, &b);
        outcome = a + b;
        printf("%.1f", outcome);
        break;
    case "*":
        scanf("%d %d", &a, &b);
        outcome = a * b;
        printf("%.1f", outcome); 
        break;
    case "-":
        scanf("%d %d", &a, &b);
        outcome = a - b;
        printf("%.1f", outcome);
        break;
    case "/":
        scanf("%d %d", &a, &b);
        outcome = a / b;
        printf("%.1f", outcome);
        break;

   }

return 0;
}
c++ char switch-statement case
2个回答
1
投票

您可以在char中使用switch,但是"+"和其他是字符串文字而不是字符文字,即'+'

您的代码中还有其他问题。例如,目前尚不清楚您期望这样做(已经固定引号):

char choice = '+', '*', '-', '/';

char是单个字符。

您的代码看起来像C,但不像C ++。如果您实际上使用的是C ++,则可以使用std::string及其find方法,例如:

#include <string>
#include <iostream>

int main(){
    std::string choices = "+*-/";

    auto choice = choices.find('*');

    switch (choice){
        case 0: std::cout << "you chose +";break;
        case 1: std::cout << "you chose *";break;
        case 2: std::cout << "you chose -";break;
        case 3: std::cout << "you chose /";break;
        default: std::cout << "invalid operator";
    }
}

0
投票

这些不是字符,这些是字符串文字。

© www.soinside.com 2019 - 2024. All rights reserved.