繁体   English   中英

Switch 语句和条件运算符 c++

[英]Switch statement and conditional operators c++

我的问题是当我们有 (if else && else if) 时为什么要使用 switch 语句和条件运算符

示例 1:

unsigned short int any_number ;
any_number = ((15>0)? 10 : 5);//using here the conditional operator
if(15>0)//using if & else
any_number=10;
else
any_number=5;

示例 2:

unsigned short int my_score;
std::cout << "what score you expect you got at the exam";
cin >> my_score;
switch(my_score)
{
case 90: 
std::cout<<"awesome keep the good work"; break;
case 80 :
std::cout<<"study harder next time"; break ;
case 20:
std::cout << "quit school"; break;
}

if(my_score==90)
std::cout<<"awesome keep the good work";
else if (my_score==80)
std::cout<<"study harder next time";
else if (my_score==20)
std::cout << "quit school";

除了使用 swith 和条件运算符的成本更少之外,我发现它们一点用都没有,我更喜欢(如果其他)更多,它给了我们更多的空间,如果有的话,任何人都可以告诉我差异吗?


我们需要 switch 语句的原因有很多,它更快更干净(我认为),但还有另一个原因:如果你切换了一个枚举变量,并且如果你忘记处理一些枚举值,编译器可以捕获它你。

c++ 警告:枚举值未在开关 [-Wswitch] 中处理

主要原因是可读性

一长串的 if else 有时比 switch 语句更难阅读和维护。

顺便说一句,性能差异肯定会在现代编译器创建的生产代码中消失。

The?: 构造允许你做在 ifs 中无法表达的事情

cout << (j>42?"a":"b")

例如

switch case 更快,对于这一点,您可以使用这两个结构编写两个功能等效的代码。 然后对比编译出来的汇编代码:细节可以参考这篇: switch和if else的效率分析

你主要关心的是代码的可读性和它是多么容易出错。 例如,当不与switchcasebreak s (,) 一起使用时,对于if - else来说,go 可能更安全。

在 C++ 中使用 switch 和 case 语句还是使用 if 语句更好? 就我个人而言,我发现那里的答案很简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM