int t,a,b; t=(a=3,b=a++); 运行后t=3,a=3,b=3; 我知道最后那个a++没有执行,这是为什么?

[复制链接]
查看11 | 回复4 | 2012-6-10 08:40:29 | 显示全部楼层 |阅读模式
t=(a=3,b=a++)执行是这样的:3赋给a,然后a赋给b ,b赋给t,最后a加1,这样结果为:t=3,b=3,a=4。...
回复

使用道具 举报

千问 | 2012-6-10 08:40:29 | 显示全部楼层
int main(){
using namespace std;
int t,a,b;t=(a=3,b=a++);
cout<<a<<endl<<b<<endl<<t<<endl;//输出结果是433
return0;}(a=3,b=a++)是个逗号表达式,从左到右计算,表达式的值是最后一个子表达式的值。...
回复

使用道具 举报

千问 | 2012-6-10 08:40:29 | 显示全部楼层
下面是验证的程序个结果:main(){int t,a,b;t=(a=3,b=a++);printf("t=%d,a=%d,b=%d\n", t,a,b);}t=3,a=4,b=3最后的a++是要执行的。语句:t=(a=3,b=a++); 对++和逗号表达式进行展开,相当于下面的语句:a=3;b=a;...
回复

使用道具 举报

千问 | 2012-6-10 08:40:29 | 显示全部楼层
a++ 执行了只不过,是先把a的值赋给了b 后 a才+1这一句执行完a就是4...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行