我在我的系统中尝试了代码.这就是我得到的...... 1)
#include <stdio.h>
int main()
{
//int a = 10;
printf("%s");
return 0;
}
Output:
1í^áäðPTRhh
Run Code Online (Sandbox Code Playgroud)
2)
#include <stdio.h>
int main()
{
int a = 10;
printf("%s\n");
return 0;
}
Output:
__libc_start_main
Run Code Online (Sandbox Code Playgroud)
我在另一个系统(diff编译器)中尝试过.而且产出不同.实际上它必须打印堆栈中最顶层的值.那y到处都不是唯一的?
在printf语句中,您指定了格式说明符%s,这意味着要打印字符串.它将检查堆栈的顶部并打印堆栈顶部的字符串
堆栈排列完全依赖于编译器
__libc_start_main()函数应执行任何必要的执行环境初始化,使用适当的参数调用main函数,并处理从main()返回并位于堆栈顶部的返回.这就是你得到的输出