发布网友 发布时间:2022-10-03 21:11
共5个回答
热心网友 时间:2023-10-11 18:32
win下 my(5)是先执行的。 你可以搜索下printf的实现方式。 printf是从左往右入栈, 然后从栈顶开始计算。也就是从右往左计算。另外 static变量是被存储在静态数据区的,而静态数据区变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。所以第二次进这个函数的时候那个static int count=a是没有任何效果的。所以就得到了5+4=9,你可以改成staitc int count; count=a,这样的话就能得到正确结果了热心网友 时间:2023-10-11 18:32
C语言默认函数调用规则是cdecl,参数从右到左压栈。先执行my(5)再执行my(4)热心网友 时间:2023-10-11 18:33
这是printf函数的问题,这个函数在执行时候,是将欲输出的变量进行压栈操作,执行的时候是从右向左,所以先执行my(5),得到10,所以第二个输出10,然后是my(4),而static变量只初始化一次,所以这次忽略count = a,所以count是在执行my(5)时的5,所以返回的是9热心网友 时间:2023-10-11 18:33
。。。GCC报错热心网友 时间:2023-10-11 18:34
很正常啊?先算的my(5),再算的my(4),逗号表达式嘛!先右边后左边