main()
{
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d",p,q,i,j);
}
上面的程序段运行结果是多少。。。???
好像编译器会影响答案???
main()
{
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d",p,q,i,j);
}
上面的程序段运行结果是多少。。。???
好像编译器会影响答案???
正确答案应该是 18,21,8,8
main()
{
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);//第一个i++后变为6第二个i++后变为7所以p=5+6+7=18之后i变为8
q=(++j)+(++j)+(++j);//q=6+7+8=21;之后j=8
printf("%d,%d,%d,%d",p,q,i,j);
}
在TC上,P=5+5+5=15,先取值,在自增,I=8
Q=8+8+8=24,先自增,在统一取值,I=8
在VC6.0上 ,P=5+5+5,和TC一样,
Q=6+7+8+1=22,貌似这种后面默认加1;可以试试看
不同编译器规定不同,一般不必深究
p=6+7+8=21
q=5+6+7=18
i=8
j=8
注明:变量++ 是先加再算
++变量 是先算再加
会影响。