c++ - 编写以下 c++ 代码的更短方法(if-else)
问题描述
我需要知道是否有更好/更短的方法来用 C++ 编写以下代码。(在通过主 if-else(逐步)时,将添加对变量 'y' 的额外检查)
int x = 5, y = 4;
if(x == 1){
if(y == 1)
printf("ok");
else
printf("not ok");
}
else if(x == 2){
if((y == 1) || (y == 2))
printf("ok");
else
printf("not ok");
}
else{
if((y == 1) || (y == 2) || (y == 3))
printf("ok");
else
printf("not ok");
}
解决方案
if(0<y && y<4 && (y<=x || x<1))
printf("ok");
else
printf("not ok");
@Christophe你是对的,解释可能会有所帮助:
int x = 5, y = 4;
if(x == 1){
if(y == 1)
printf("ok");
else
printf("not ok");
}
else if(x == 2){
if((y == 1) || (y == 2))
printf("ok");
else
printf("not ok");
}
else{
if((y == 1) || (y == 2) || (y == 3))
printf("ok");
else
printf("not ok");
}
当'printf("ok");' 被执行,'(y == 1) || (y == 2) || (y == 3)' 必须是'true'。
'x' 和 'y' 是整数意味着:
'(y == 1) || (y == 2) || (y == 3)' 等价于 '0<y && y<4',因为 '0<y' 是 'true',当 'y' 是其中之一 {1,2,3,4,.. .} 和 'y<4' 是 'true',当 'y' 是其中之一 {3,2,1,0,-1,-2,...} 和 '0<y && y<4'是“真”意味着:“y”是其中之一 {1,2,3}。
当你写:
if(0<y && y<4)
printf("ok");
else
printf("not ok");
如果你进入这个分支,会有太多的“好的”:
if(x == 1){
...
}
或进入这个:
else if(x == 2){
...
}
当你进入其中一个分支时,在两个分支中,'1<=x' 为'true'。
这意味着:如果 'x<1'(相当于 '!(1<=x)')为 'true',您将不会进入其中之一。
当你写:
if(0<y && y<4 && x<1)
printf("ok");
else
printf("not ok");
当 'x' 是其中之一 {1,2,3,4,5,...} 并且 'y' 是正确的时,会有太多的 'not ok'。
- 'x' 为 1:'0<y && y<4' 必须为 'true' 才能获得 'ok',但 'x<1' 将是 'false'!
- 'x' 为 2:'0<y && y<4' 必须为 'true' 才能获得 'ok',但 'x<1' 将是 'false'!。
- 'x' 为 3 或更大:'0<y && y<4' 必须为 'true' 才能表示 'ok',但 'x<1' 将是 'false'!。
对于 1. 和 2. '0<y && y<4' 太多了(想想等价 'y==1 || y==2 || y==3'),但两者都是 'true ' 和 'x<1' 是 'false',但必须有类似 '(... || x<1)' 的东西,而这个 '...' 必须确保:
- 'y' 为 1,当 'x' 为 1 并且
- 'y' 为 1 或 'y' 为 2,当 'x' 为 2 并且
- 当“x”为 3 或更大时,“y”为 1 或“y”为 2 或“y”为 3。
为 1。'x' 为 1:'y<=1'
对于 2. 'x' 是 2: 'y<=2' 在这两种情况下,'y<=x' 都是正确的。
对于 3。'x' 为 3 或更大:'y<=x' 将始终为 'true',当 'y' 正确时 ('y==1 || y==2 || y==3') .
你得到了答案。
推荐阅读
- javascript - React 应用程序使用 Laravel 进行 API 和用户登录。关于从数据库中检索当前登录用户的问题
- javascript - 用于 JavaScript 解析 JSON 的 Python/Django 转义字符串列表
- reactjs - TouchableHighlight 影响填充
- python - TypeError: function() 参数 1 必须是代码,而不是 str
- php - 用PHP提取两个字符串之间的数据
- firebase - 自定义事件根本没有显示在 Firebase 仪表板上
- javascript - NPM run serve 在 localhost 上显示我的 vuejs 项目的旧状态
- machine-learning - 如何使用词向量进行测量
- elixir - 如何在 Ecto 中编写这个 where 子句
- c++ - C ++如何将具有不同数量参数的函数作为参数传递