我有两个变量,我想分别处理较大和较小的一个。
我的方法:
a = 1;
b = 2;
if (a >= b){
int c = a;
int d = b;
}
else{
int c = b;
int d = a;
}
Run Code Online (Sandbox Code Playgroud)
我获得的未使用的变量的错误,当我尝试使用c和d以后,它说
c无法解决
有办法解决吗?
Bat*_*eba 29
在这两种情况下c,d它们的作用域都限于if else块中的括号,因此您不能在该范围之外访问它们。
您需要某种形式的东西
int c, d;
if (a >= b){
c = a;
d = b;
} else {
c = b;
d = a;
}
Run Code Online (Sandbox Code Playgroud)
Nat*_*ica 21
正如其他人指出的那样,这里的问题是在哪里声明变量。您不能在声明它们的范围之外使用它们,否则会出现错误。
如果可以使用C ++ 17,则可以使用std::minmax和结构化绑定(如
int main()
{
int a = 5, b = 10;
auto [min, max] = std::minmax(b, a);
std::cout << min << " " << max;
}
Run Code Online (Sandbox Code Playgroud)
真是太好了,因为现在您没有任何时间未初始化的变量。
这是因为您要在if语句中声明变量。
从逻辑上讲,您可能会相信,else如果声明同时在if和else块中,则以某种方式可以保证将分配变量。
正确的方法是在if块之前声明变量,否则变量的使用将限于声明该变量的范围。
另外,您可以通过使用三元运算而无需使用if和来执行此else操作:
int a = 1;
int b = 2;
int c = a >= b ? a : b;
int d = b < a ? b : a;
Run Code Online (Sandbox Code Playgroud)
使用这种类型的语法,您可以省去编写简单代码if和else分配变量的麻烦。变量之后的?是结果,如果条件为真,并经过变量:是结果,如果条件为假。
| 归档时间: |
|
| 查看次数: |
1209 次 |
| 最近记录: |