c++ switch语句,这是如何工作的
C++ switch statement , how does this work
#include <iostream>
#include <sstream>
int main(int argc, char* argv[]) {
if ( argc != 2 ) {
std::cout << "usage: " << argv[0] << " <n> " << std::endl;
return 0;
}
std::stringstream strm;
strm << argv[1];
int count = 0;
int number;
strm >> number;
switch ( number ) {
case 0: ++count;
case 1: ++count;
case 2: ++count;
case 3: ++count;
case 4: ++count;
}
std::cout << "count: " << count << std::endl;
return 0;
}
我知道这是一个新手问题,但我刚开始学习c++。我参加了一门游戏设计课程,这是关于SVN的第一个例子。当我在编译后运行程序时,
。/运行4(即我给出参数4)我得到一个输出:count: 1
。/运行3我得到一个输出:count: 2
。/运行1数:4
。/运行0数:5
既然count初始化为0,为什么./run 1给出4或者./run 0给出count 5 ?
我真的很抱歉提出这样一个愚蠢的问题,但我希望任何解释。提前感谢关于
对于switch
语句,当控制传递给case
标签时,代码将继续通过所有其他case
标签,直到遇到break
或return
(或其他流量控制机制)。这对于统一特定情况的逻辑很有用,也可以用于更复杂的任务。例如:a Duff's Device
switch语句定义在何处输入一组代码。
switch ( number ) {
case 0: ++count; //entrance point with number= 0
case 1: ++count; //entrance point with number= 1
case 2: ++count; //entrance point with number= 2
case 3: ++count; //entrance point with number= 3
case 4: ++count; //entrance point with number= 4
}
本质上没有出口,除非到达开关的末端。但是,可以在case下的任何地方添加"break;"语句,以使代码提前退出switch(或超出作用域)。
另外,关键字"default"应该在case语句中使用,但有点离题。当号码没有定义大小写时,调用默认关键字。例如,使用上面的情况,如果有人将数字6发送到该情况。
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- 有人能解释一下为什么下界是这样工作的吗C++的
- ExtractIconEx:可以工作,但偶尔会崩溃
- C++中的memset函数工作不正常
- 当我在第一个循环中使用"auto"时,它工作正常,但是使用"int"它会给出错误,为什么?
- 当 int 方法工作正常时,void 方法有何不同,或者为什么我不能调用 void 方法?
- sdl软件渲染器不工作,工作在硬件加速的一个