我今天的采访中有这样一个问题。
#include <stdio.h>
int main(void)
{
char *s="123456790";
printf("%c,%c",*(char *)((int *)s+++1),*s);
return 0;
}
我的答案是5,1,但面试官说是5,2!当然,我知道 C 中默认的调用约定是 __cdecl,参数传递的顺序是从右到左,所以我把这件事告诉了他。但他不相信。比我们在 VS2013 上运行它。它显示 5,2!!!!
现在,我回到家在 ideone 上再试一次。答案是 5,1! http://ideone.com/sq6yRE 为什么?!我对此感到很困惑。请问谁能帮助我?