printf 函数的运算顺序

来源:互联网 发布:如何进驻淘宝商城 编辑:程序博客网 时间:2024/05/18 02:18

 

printf 函数的运算顺序

#i nclude <stdio.h>
int main()
{
    int i=8,j=3;
    printf("%d %d %d %d/n",++i,i,i++,i);
    printf("(j++)*(++j)+(j--)*(--j)=%d j=%d j=%d j=%d",(j++)*(++j)+(j--)*(--j),j,++j,j);
    getch ();
    return 0;

}

 


在WIN-TC中输入以上的代码,可以知道:在逗号隔开的“,”的式子中是按从右到左进行运算的,先算最右边的

j,再算++j,再算右边数过来第二个j,最后才是(j++)*(++j)+(j--)*(--j);

而在(j++)*(++j)+(j--)*(--j)中却是从左到右进行运算的,先算(j++)》到(++j)》到(j++)*(++j)》到(j--)》

到(--j)》到(j--)*(--j)》最后是中间的加法运算。

原理:
因为它们作为printf的参数,函数printf从左往右读取,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所有我们看见的结果是,从右边开始处理的。

原创粉丝点击