我似乎无法理解我的代码有啥问题,我无法获得输出
Posted
技术标签:
【中文标题】我似乎无法理解我的代码有啥问题,我无法获得输出【英文标题】:I cant seem to get whats wrong with my code, I cant get the output我似乎无法理解我的代码有什么问题,我无法获得输出 【发布时间】:2019-11-21 19:42:52 【问题描述】:我一直在使用三元运算符编写奇偶数代码,但它正在显示
"expected primary-expression before ‘?’ token"
我的代码:
int n;
cout<<"enter any numbner::";
cin>>n;
if(n%2==0) ? cout<<"no is even::" : cout<<"no is odd::";
return 0;
预期的 o/p 是:
enter any number:20
no is even::
【问题讨论】:
【参考方案1】:你有一个混合if-statement和conditional operator在这里:
if (n % 2 == 0) ? cout << "no is even::" : cout << "no is odd::";
//^^^ ^^^^
这是错误的。您可以使用条件运算符编写,例如
(n % 2 == 0) ? std::cout << "no is even::" : std::cout << "no is odd::";
或更紧凑
std::cout << ( n % 2 == 0 ? "no is even::" : "no is odd::" );
// ^^ ^^
注意额外的括号,这是由于算术左移<<
的precedence 高于条件运算符a?b:c
。
【讨论】:
【参考方案2】:您正在混淆实践。 ternery (?
) 期望值来评估 - if
没有给出值。
要么做:
if(n%2==0)
cout<<"no is even::";
else
cout<<"no is odd::";
或
std::string value = (n%2) ? "odd" : "even";
cout << value;
// for bonus points you can do this without a temporary variable.
【讨论】:
以上是关于我似乎无法理解我的代码有啥问题,我无法获得输出的主要内容,如果未能解决你的问题,请参考以下文章
我永远无法预测 XMLReader 的行为。有啥理解技巧吗?