请问一个C++的程序

来源:百度知道 编辑:UC知道 时间:2024/05/15 02:04:43
#include<iostream>
int main()
{
using namespace std;
int i=0,j=0,k=0,l=0;
(j=(i++))+(k=(i++));
cout<<j<<' '<<k;
}

结果是,j=0,k=0
在VC++2008测试过,(j=(i++))+(k=(i++))中间的那个+运算符,换成其他的。
结果是:
任何情况下j=0
运算符用, ?: ||这三个,结果k=1;用其他的,k=0
谁能解释一下为什么?

后置++删掉放到下一行,
(j=(i++))+(k=(i++));
变成
(j=i)+(k=i);
i++;
i++;

j == 0
i == 2
k == 0

但是对于非基本类型(int 是基本类型)的后置++重载,结果还会有可能不同,这种情况下j可能是相当于1的结果。

研究这种可读性很差的式子没有任何意义的;还是把它拆开为好;前置和后置++也最好单独使用。

如果你面试笔试程序总是写成这样,一般公司不会要你;除非对喜欢钻牛角尖出试卷的老师有用。

你为什么不输出i看看呢
把那个长式子拆开输出i看看

追究这些没有什么实际意义的

换成其它的是换成什么样子???没明白你的意思。。。