C函数参数压栈问题

来源:互联网 发布:知乎 高达seed 编辑:程序博客网 时间:2024/06/08 06:51

今天写了一个sprint_f(),发现了一个大问题。

int main(){  char str[32] = "abcd";  for(int i = 0; i < 32; )  {    printf("%c_%c", str[i], str[i++]);  }  return 0;}

按道理这个后加加应该不会影响前面的,输出的应该是aabbccdd

但是,不是的!输出是 bacbdc d,原因大概就是函数参数压栈顺序的问题,好像蛮复杂的。反正就是不要在函数参数上做什么别的操作,传入一个纯纯的参数就行。