如何将 C 代码转换为 C++?当我尽力而为时,我每次都失败了。 谁能帮我吗?
特别是,我试图理解以下内容:
v=v%10?v%(5*r)*n--:v/10
我知道是否v == v mod 10,v%(5*r)*n--
。如果没有,v/10
。但我不明白v%(5*r)*n--
。
这是上下文中的代码:
long v=1,r=1e9;
main(n){
for(scanf("%d",&n);v=v%10?v%(5*r)*n--:v/10;n||printf("%d",v%r));
}
最佳答案
该 C 表达式在 C++ 中也有效。由于运算符优先级规则,表达式 v%(5*r)*n--
等效于表达式 v % ((5*r)*(n--))
。后缀递减运算符--
(它将变量减一)将首先计算,剩下的是A % B * C
类型的表达式。由于运算符 %
(余数)和 *
(乘法)具有相同的优先级,因此将应用从左到右的关联性规则。因此,我们有 v % ((5*r)*(n--))
。欲了解更多信息,请查看这些链接:
http://en.cppreference.com/w/cpp/language/operator_precedence
https://en.wikipedia.org/wiki/Operator_associativity
你也不理解三元运算符。在您的情况下,整个语句 v=v%10?v%(5*r)*n--:v/10
的意思是:如果 v%10
为 true (与零不同)然后将 v%(5*r)*n--
的结果赋给变量 v
,否则将 v/10
的结果赋给变量 v
code> 到变量 v
。欲了解更多信息,请查看
http://www.cprogramming.com/reference/operators/ternary-operator.html
顺便说一句,请注意,撰写此博客的人生成了一些糟糕的代码。您可能不想从中学习。
关于c++ - 如何将 C 转换为 C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34289158/