标签: c
int i = 123; printf("%s\n", i);
我认为编译器将i视为字符串的开头,并试图找到'\ 0'来终止。进程空间是只读的,所以我认为它将成功运行。但它没有打印任何内容,并以segmentfault 11终止。
答案 0 :(得分:2)
您的程序尝试将123解释为查找字符串的内存地址,格式为%s。如果要打印整数,请改用%d。
123
%s
%d
您现在得到的是未定义的行为,这就是行为不符合您预期的原因的解释。