C中的段故障示例,但我不知道如何解释

时间:2015-08-24 01:01:27

标签: c

int i = 123;
printf("%s\n", i);

我认为编译器将i视为字符串的开头,并试图找到'\ 0'来终止。进程空间是只读的,所以我认为它将成功运行。但它没有打印任何内容,并以segmentfault 11终止。

1 个答案:

答案 0 :(得分:2)

您的程序尝试将123解释为查找字符串的内存地址,格式为%s。如果要打印整数,请改用%d

您现在得到的是未定义的行为,这就是行为不符合您预期的原因的解释。