我是编程的新手,我开始使用Bjourne的书:编程原理和实践c ++第2版。练习8第3章他要求:
“编写一个程序来测试一个整数值,以确定它是奇数还是偶数......提示:参见§3.4中的余数(模数)运算符。”
我可以用以下的方式做到:
int main() {
int n;
cout << "Enter an integer: ";
cin >> n;
if ( n%2 == 0) {
cout << n << " is even.";
}
else {
cout << n << " is odd.";
}
return 0;
}
但他在自己的网站上给出了自己的解决方案:
int main()
{
int val = 0;
cout << "Please enter an integer: ";
cin >> val;;
if (!cin) error("something went bad with the read");
string res = "even";
if (val%2) res = "odd";
cout << "The value " << val << " is an " << res << " number\n";
keep_window_open();
}
catch (runtime_error e) {
cout << e.what() << '\n';
keep_window_open("~");
}
/*
Note the technique of picking a default value for the result ("even") and changing it only
if needed.
The alternative would be to use a conditional expression and write
string res = (val%2) ? "even" : "odd";
什么是
string res = "even";
if (val%2) res = "odd";
和
string res = (val%2) ? "even" : "odd";
实际上在做什么?我没有看到他在书中解释过这些。另外,最后一个代码,当我输入偶数值时,它给我“奇数”结果,当我输入和奇数时,给出“偶数”结果。到底是怎么回事?对不起,很长的帖子,希望我能解释一下我的需要......
答案 0 :(得分:3)
? :是ternary operator。
using Project.Totals;
public void btnCalculate_Click(object sender, EventArgs e)
{
var cost = new Cost();
只是
的一个相当简洁的版本if (val%2) res = "odd";
请注意,if (val%2) {
res = "odd";
}
实际上并不关心该值是否为&#34; true&#34;或&#34;假。&#34;它只检查零或非零。所以它等同于
if(...)
第二个命令行:if( val%2 != 0)
相似是写作的简短方法:
string res = (val%2) ? "even" : "odd";
这些命令的语法是string res;
if(val%2 != 0){
res = "even";
}
else{
res = "odd";
}
答案 1 :(得分:1)
添加到之前的答案,你必须注意布尔值(或&#34;真&#34;值)是0和1,(0表示假,1表示在布尔代数中为真)
所以,当
string res = (val % 2) ? "even" : "odd";
请注意,当您给出奇数值时,它将始终返回数字1,即#34; true&#34;,反之为偶数。
你必须转过来让程序运转起来。
答案 2 :(得分:0)
他只是不是编写多个括号,而是根本不使用它们
function (doc) {
if(doc.entities){
var arrayLength = doc.entities.length;
for (var i = 0; i < arrayLength; i++) {
if (parseFloat(doc.entities[i].relevance) > 0.5)
index("default", doc.entities[i].text);
}
}
}
而不是
string res = "even"; //default value
if (val%2) res = "odd"; //in case it is odd, value changes
//output or threat in some way value.
简单地写一下你之前写过的string res = (val%2) ? "even" : "odd";
。