gpt4 book ai didi

javascript - C++/JS 中的 Switch 语句变体

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:45:32 26 4
gpt4 key购买 nike

刚刚学习 JS,有 C++,C# 背景,我试过这个:

var userChoice=prompt("Enter 1,2 or 3");
switch(userChoice)
{
default : alert("Default case");
case '1': alert("case 1 ");
case '2': alert("case 2 ");
case '3': alert("case 3 ");


}

和 C++ 中的类似片段:

#include<iostream>
using namespace std;

int main()
{
int userChoice=1;
switch(userChoice)
{
default : cout<<"Default case ";
case '1': cout<<"case 1 ";
case '2': cout<<"case 2 ";
case '3': cout<<"case 3 ";


}
return 0;
}

在使用 userChoice=1 执行两者时,我发现 JSFiddle排除默认大小写,而在 C++ 中,Ideone打印所有情况,包括默认情况。好的,让我总结一下。


JS:

1.设置 userChoice=1 ,执行案例 1,案例 2,案例 3。

2.设置 userChoice=2 ,执行案例 2,案例 3。

3.设置 userChoice=3 ,执行情况 3。

4.Putting userChoice=4/5..,执行默认情况,情况 1,情况 2,情况 3。

C++:

1.输入 userChoice= anything,它会执行所有情况!


现在稍微改变一下,我在 default case 之后放了一个 break。导致:

default : cout<<"Default case "; break;

我观察到的是 JS ,除默认情况外,所有结果都相同。它没有执行所有情况,而是以默认情况终止,因为我已经使用了“中断”。


令人惊奇的是,在 C++ 中(放置 break ofcourse 之后):

  1. 无论我为 userChoice 赋予什么值,输出都只是 Default Case。 :|

困扰我的事情:

  1. 这些是这些语言的预期行为,或者它们可能在不同的编译器(对于 C++)上有所不同。

  2. JS 在执行之前是否已经知道 default case 的位置(我不知道该用什么词),而 C++ 只是跟随代码,直到它到达 break(或者可能是 return 或其他东西) ?

是的,我知道我应该更多地使用 break 语句......但仍然......出于好奇!

最佳答案

您将变量 userChoice 定义为具有类型 int 并将其初始化为 1。

在 switch 语句中有字符常量将被转换为 int 类型,所以 '1' 如果编码为 ASCII,则相当于 49,'2 ' 将等于 50 等等。所以 userChoice 将不等于这两个常量,控制权将传递给标签 default 并且此标签之后的所有语句将按顺序执行,因为没有任何跳转语句

#include<iostream>
using namespace std;

int main()
{
int userChoice=1;
switch(userChoice)
{
default : cout<<"Default case ";
case '1': cout<<"case 1 ";
case '2': cout<<"case 2 ";
case '3': cout<<"case 3 ";


}
return 0;
}

如果您将按以下方式更改代码

#include<iostream>
using namespace std;

int main()
{
int userChoice=1;
switch(userChoice)
{
default : cout<<"Default case "; break;
case '1': cout<<"case 1 "; break;
case '2': cout<<"case 2 "; break;
case '3': cout<<"case 3 "; break;


}
return 0;
}

然后你会得到输出

Default case

如果您将字符“1”的整数值 49 分配给 userChoice,则输出将为

case 1 

关于javascript - C++/JS 中的 Switch 语句变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22361078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com