C++ 如何将这个特定的“if/else”块转换为三值运算符?
有人能指导我或者把这个转换成三元运算符形式吗?我正在使用堆栈制作一个文本编辑器,在其中它将检查代码中的括号,但我只需要使用三元运算符缩短代码的帮助C++ 如何将这个特定的“if/else”块转换为三值运算符?,c++,parsing,ternary-operator,code-readability,C++,Parsing,Ternary Operator,Code Readability,有人能指导我或者把这个转换成三元运算符形式吗?我正在使用堆栈制作一个文本编辑器,在其中它将检查代码中的括号,但我只需要使用三元运算符缩短代码的帮助 if(s.at(i)==x.at(j)) { list.push_back(s.at(i)); } if(s.at(i)==y.at(j)) { if(!list.e
if(s.at(i)==x.at(j))
{
list.push_back(s.at(i));
}
if(s.at(i)==y.at(j))
{
if(!list.empty())
{
if(list.back()=='(' && s.at(i)==')')
{
v=1;
list.pop_back();
}
else if(list.back()=='{' && s.at(i)=='}')
{
v=1;
list.pop_back();
}
else if(list.back()=='[' && s.at(i)==']')
{
v=1;
list.pop_back();
}
else
{
error_position=i+1;
}
}
else
{
error_position=i+1;
v=0;
}
}
您的代码应该清晰易读,这里引入的任何三元操作都会使代码不那么清晰,而不是更好,而且也不会提高性能
三元运算符通常不应有副作用,只需选择要使用的值即可。min是三元运算符的一个很好的用法,即a三元运算符用于在值之间进行选择,而不是在运算之间进行选择 如果你有一个只分配给同一个变量的条件,重写是有意义的。 比如说,
int x = 0;
if (something)
{
x = 12;
}
else
{
x = 34;
}
不如
int x = something ? 12 : 34;
在代码中使用运算符不会使代码变得更短,只会使代码更加复杂和不可读。
目前还不清楚其结果会是什么。
唯一可能的候选值是分配给v的值,但不是在每个分支中都分配给v,所以它是不存在的
明显的简化是将三个条件加上| |,但更好的方法可能是将测试完全抽象出来,例如
bool matching_brackets(char p1, char p2)
{
return (p1 == '(' && p2 == ')')
|| (p1 == '{' && p2 == '}')
|| (p1 == '[' && p2 == ']');
}
// ...
if(s.at(i)==y.at(j))
{
if (list.empty())
{
v = 0;
error_position = i + 1;
}
else if (matching_brackets(list.back(), s.at(i)))
{
v = 1;
list.pop_back();
}
else
{
error_position = i + 1;
}
}
// ...
如果我是你,我会避免使用条件运算符来缩短代码,因为这只会让一切更难理解。清除代码>>>>>>>>>短代码。为什么要这样做?有一个。没有任何收获。这会使代码变得相当不可读。我真的不明白这一点,因此不是免费的代码服务/pls做我的作业网站。如果你需要在两个选项中选择,只使用三元代码。用于其他任何操作,它会使您的代码变得凌乱。此外,千万不要像您在这里要求的那样使用三元运算符来执行副作用。这完全违背了三元运算符的目的。