今日のインタビューでそのような質問があります。
#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 なぜ?! 私はそれについてとても混乱しています。誰が私を助けてくれますか?