c++ switch语句,这是如何工作的

C++ switch statement , how does this work

本文关键字:工作 何工作 语句 switch c++      更新时间:2023-10-16
#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标签,直到遇到breakreturn(或其他流量控制机制)。这对于统一特定情况的逻辑很有用,也可以用于更复杂的任务。例如: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发送到该情况。