请问一下一个C++程序问题

来源:百度知道 编辑:UC知道 时间:2024/06/24 18:47:26
#include<iostream.h>
int main()
{
int i(3),j(4),k;
k=(i-j)?++i:++j;
cout<<i<<`\t`<<k<<endl;
return0;
}
的答案为什么是3 5 5
怎么来得????????
不好意思 程序中应为k=(i>j)?
cout<<i<<`\t`<<j<<`\t`<<k<<endl;

#include<iostream>
using namespace std;
int main( )
{
int i(3),j(4),k;
k = (i > j) ? ++i : ++j;
cout << i<< '\t' << j << '\t' << k << endl;

return 0;
}

表达式(条件)? a : b的值取决于括号内的条件,条件为真则整个表达式的值为a;否则为b。

k = (i > j) ? ++i : ++j;这一句,i = 3 小于j,所以整个表达式的值为后者++j,因为j = 4,所以++j就是5,前自增运算符有副作用,即++j的其实就是j += 1,所以k等于5。k、j的值都为5,++i由于没有被执行所以i值不变,所以打出3 5 5。

BTW:你用的书不符合最新的C++标准,iostream.h的写法已经被C++标准所废弃,换本书吧。

只有2个数怎么 3 5 5 ?

我运行的答案是 4 4