在printf(在c中)中,显示变量和推入堆栈的顺序是什么



假设我有以下代码:

#include <stdio.h>    
main()
{
   int a,b,c;
    b=1;
    c=2;
    printf("%dn",10,b=20,b=30,c=50,c=100);
    printf("%dn",b);
    printf("%dn",c);
}

o/p-10,20,50b的值是怎么变成20而不是30的。。c也是一样?

参数表达式的求值顺序和它们在堆栈上的推送是不同的。

C中未指定参数表达式的求值顺序。因此,可能首先求值b=20,然后求值b=30,反之亦然。

在堆栈中放置参数的顺序如下:最右边的参数放在第一位。

最新更新