为什么是这个输出?

0 c function

这是代码:

# include <stdio.h> 
# define scanf  "%s Geeks For Geeks " 
main() 
{ 
    printf(scanf, scanf); 
    getchar(); 
    return 0; 
}
Run Code Online (Sandbox Code Playgroud)

输出是:%s Geeks For Geeks Geeks For Geeks

这个输出是如何产生的?

kir*_*dar 5

你的 printf 会变成

printf(scanf, scanf);

         |
         |
        \ /

printf("%s Geeks For Geeks ", "%s Geeks For Geeks" ); 

         |
         |       //%s is replaced with "%s Geeks For Geeks" string
        \ /

printf("%s Geeks For Geeks Geeks For Geeks ");
Run Code Online (Sandbox Code Playgroud)

并在控制台上

%s Geeks For Geeks Geeks For Geeks
Run Code Online (Sandbox Code Playgroud)

旁白:请不要做这种编码。糟透了。