pseudocode - 正在做一个练习测试,并遇到了这个。z的值是多少?
问题描述
int z = 5, x = 44;
switch (x)
{
case 45:
z = z + 15;
break;
case 46:
z = z - 5;
break;
default:
z = z * 3;
}
解决方案
Switch
陈述可以被认为是某种特殊的If
陈述。用一件小事。如果案例主体不包含break
语句,则继续进行案例检查。
至于 ,default case
当没有其他案例检查为真时,它会被击中。
话虽如此,您的 switch 语句可以写成:
if(x == 45)
{
z = z + 15;
} else if(x == 46)
{
z = z - 5;
} else
{
z = z * 3;
}
当给定 x 和 z 值 44 和 5 时,z 值将是显而易见的。
而且,没有 break 语句的案例主体是没有 else 的 if:
if(x == 45)
{
z = z + 15;
}
if(x == 46)
{
z = z - 5;
}
z = z * 3;
因此,当您不间断地运行 switch 时,所有情况都会受到影响。
为了进一步检查,请考虑以下代码:
if(x == 44)
{
z = z / 5;
x = x + 1;
} else if(x == 45)
{
z = z + 15;
x = x + 1;
} else if(x == 46)
{
z = z - 5;
x = x + 1;
} else
{
z = z * 3;
}
和这段代码
if(x == 44)
{
z = z / 5;
x = x + 1;
}
if(x == 45)
{
z = z + 15;
x = x + 1;
}
if(x == 46)
{
z = z - 5;
x = x + 1;
}
z = z * 3;
具有相同的给定值 x = 44 和 z = 5。如您所见,我实际上将x = x + 1;
语句添加到相同switch on x
的case
s 和一个新的情况下,在 z 赋值之后的所有位置,有和没有break
s。在第一个示例中,即使 x 值递增到等于 45,z 值也会变为 1;但是检查停止了,因为它从未到达 else 块。但在第二个示例中,所有块都被命中,z 值产生等于 33。
推荐阅读
- android - Android 位置仅在 Android Emulator 上打开谷歌地图后才会刷新
- reactjs - 反应 oidc-client 令牌超时登录静默错误
- java - CaffeineCache为什么使用refreshAfterWrite时loadSuccessCount不增加?
- sql - 限制列 SQL 的可能值
- python - Python:有没有更简单的方法在 pandas DataFrame 上应用 map()?
- sql - 在 SQL 中使用带有 group by 的子选择
- python - 解压字符串
- python - 从另一个函数返回函数
- python-3.x - 如何在应用于 pandas DataFrame 的 lambda 函数中使用 max
- php - BelongsTo 上的可搜索方法在 laravel nova 中不起作用,不返回任何项目