#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给出计数5.
我真的很抱歉这个愚蠢的问题,但我要感谢任何解释。
先谢谢 此致
答案 0 :(得分:10)
使用switch
语句,当控件传递到case
标签时,代码将继续通过所有其他case
标签,直到break
或{{1遇到(或其他流控制机制)。这对于统一特定情况的逻辑非常有用,也可用于更复杂的任务。例如,请参阅:a Duff's Device.
答案 1 :(得分:3)
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
}
除了到达开关的末端之外,本身没有出口。但是,可以添加“休息”;语句下的任何地方的语句都会导致代码提前退出(或超出范围)。
此外,但稍微偏离主题,关键字“default”应该在case语句中使用。当数字没有定义的大小写时,将调用default关键字。例如,使用上述情况,如果有人将号码6发送到案例。