MST

星途 面试题库

面试题:C++中switch参数类型错误处理基础

在C++中,假设你有一个switch语句,预期的参数类型是整型,但实际传入了一个浮点数。请描述可能出现的错误,并写出至少两种修正这种参数类型错误的方法。
48.5万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

可能出现的错误

  1. 编译错误:C++ 是强类型语言,switch 语句要求其控制表达式的类型为整型(包括 charshortintlong 等整数类型),传入浮点数会导致编译失败,因为编译器无法将浮点数隐式转换为整型用于 switch 语句。

修正方法

  1. 显式类型转换:将浮点数显式转换为整型。
#include <iostream>
int main() {
    double num = 3.14;
    int intNum = static_cast<int>(num);
    switch (intNum) {
        case 3:
            std::cout << "Matched 3" << std::endl;
            break;
        default:
            std::cout << "Default case" << std::endl;
    }
    return 0;
}
  1. 改变逻辑结构:如果 switch 语句的逻辑是基于浮点数的区间判断,可以使用 if - else if 结构代替。
#include <iostream>
int main() {
    double num = 3.14;
    if (num >= 3 && num < 4) {
        std::cout << "Matched range" << std::endl;
    } else {
        std::cout << "Default case" << std::endl;
    }
    return 0;
}