一个小小的c程序问题

来源:百度知道 编辑:UC知道 时间:2024/09/21 20:35:16
#include<stdio.h>
void main()
{
int a=3;
int b=3;
a=(a--)*3;
b=(b--)*3;
printf("a=%d b=%d",a,b);
}
为什么最后的输出结果a=-29036 b=657
求教
我用的trubo c++3.0
还有我打错一个地方,应该是b=(--b)*3
一楼的建议我先谢谢,不过写问题的时候顺手就写上了,没在乎

运行结果是a=8 b=6,这是我用VC6的编译结果。

a--是后置型自减,

a=(a--)*3; 相当于a=a*3;a=a-1;因此a=8。

--b是前置性自减,

b=(--b)*3; 相当于b=b-1;b=b*3;因此b=6。

与编译运行结果相同。

是你的编译器出了问题了吧?

运行结果是a=8,b=8
(a--)*3先是(a=3)*3得9 然后a值减一为8.