给出代码片段:
int main()
{
printf("Val: %d", 5);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有没有保证编译器会存储"Val: %d"和'5'连续?例如:
+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| ... | %d | ' ' | ':' | 'l' | 'a' | 'V' | '5' | ... |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+
^ ^ ^
| Format String | int |
Run Code Online (Sandbox Code Playgroud)
这些参数究竟是如何在内存中分配的?
此外,printf函数是否相对于格式字符串或绝对值访问int?例如,在数据中
+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| ... | %d | ' ' | ':' | 'l' | 'a' | 'V' | '5' | ... |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+
^ ^ ^
| Format String | int | …Run Code Online (Sandbox Code Playgroud)