问一个问题,想不明白

来源:百度知道 编辑:UC知道 时间:2024/06/27 03:45:44
有一个程序
c = 1000;
if((c++) == (++c))
{
printf("works\n");
}
else
printf("NOT works\n");

为什么output会是works? 在if里面两边为什么会一样?把if里面改成
if(c == (++c))也一样,为什么?
output 没错,就是works,怎么回事?

在编译时给c分配了一个内存,不管时c++还是++c都是在这个内存上进行。在进行完++c和c++运算后,又从c这个内存中取值比较结果肯定是一样的。就算你改成if(++c == (++c))也还是一样的结果。

if else 是条件语句
(c == (++c))是从右往左运行

你给的程序output 是
NOT works
而改成
if(c == (++c))
output为
works

注意验证。

++是自加符,C++是C先进行运算再自加,而++C则是C先自加再参于运算。加括号后先算括号里面的。