【发布时间】:2017-07-27 08:54:10
【问题描述】:
int foo(char c)
{
switch(c)
{
case '1':
return(1);
case '2':
return(2);
}
}
int main()
{
cout << foo('a');
}
这个程序打印 97 。
** 如果没有任何 switch case 匹配,它将打印 ASCII 值作为输出。 如果没有一个案例匹配,为什么函数返回 ASCII 值**
【问题讨论】:
-
未定义的行为。你必须返回一个值;
-
如果
switch中的所有案例都不匹配,你会从foo返回什么?未从声明为执行的函数返回任何内容会导致未定义的行为,这会使整个程序格式错误且无效。 -
不要让
return看起来像一个函数。 -
请启用编译器警告。 警告 C4715:'foo':并非所有控制路径都返回值
-
@CIsForCookies 不过,我会坚持我的说法。 YMMV。 :)
标签: c++ switch-statement