简介
函数形参的求值顺序是一个未定义的行为,X86和ARM平台有各自的实现。
一个简单的例子
input_param_sequence.c
#include <stdio.h>
int main()
{
int i = 0;
printf("%d, %d\n", i++, i++);
return 0;
}
执行结果
在ARM下的执行结果是:
在X86下执行的结果是:
初步结论
ARM平台和X86平台函数入参的求值顺序不一样,ARM是从右到左求值的,X86是从左到右求值的。
原理
参考(19条消息) x86 和 arm 的函数调用规则_linux_chow的博客-CSDN博客
https://blog.csdn.net/linux_chow/article/details/49556513