这里我有一个非常简单的程序,输出对我来说很奇怪,
#include "stdio.h"
#include "string.h"
void func_stack();
int main(int argc, char *argv[]) {
func_stack();
}
void func_stack() {
int a = -1;
char s[4];
int b = -1;
strcpy(s,"1234");
printf("a+b result to %d\n",a+b);
}
我猜 strcpy 函数使用 '\0' 为后来的 int 变量“b”覆盖了一些东西,并给出了一个奇怪的计算结果,但是在我在 x86 linux 机器上编译它之后,我仍然得到 -2 结果,它是相同的结果因为没有 strcpy 发生。
任何人都可以解释为什么会这样?