今天写了一个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,原因大概就是函数参数压栈顺序的问题,好像蛮复杂的。反正就是不要在函数参数上做什么别的操作,传入一个纯纯的参数就行。