今天在我的采访中有一个这样的问题。不打印在VS2013中使用__cdecl
#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上运行它。 IT SHOWED 5,2 !!!!!
现在,我回到家,再次尝试ideone.THE ANSWER是5,1 !!! http://ideone.com/sq6yRE 为什么?我很困惑,请帮我一下?
调用约定并不意味着有关的论点*评估*,只是它们是* *通过对订单的订货任何东西。 –
[请参阅此处](http://stackoverflow.com/a/8785539/2065121)进行类似的讨论。 –
不要为这家公司工作。显然,他们会给你未指定的任务,以工作... – fritzone