#include <stdlib.h>
#include <stdio.h>
main()
{
const char* str_int = "777";
const char* str_float = "333.3";
int i = atoi(str_int);
float f = atof(str_float);
printf("%s %s", i, f);
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一些我在网上找到的示例代码,它们都导致了总线错误。为什么会这样?
你printf的不正确。试试这个:
printf("%d %f", i, f);
Run Code Online (Sandbox Code Playgroud)
问题是您的格式说明符是%s,它需要字符串。但是你给了它一个int和一个float。因此结果是未定义的行为。
它崩溃的原因是因为它printf会尝试将参数作为字符串(它们是指针)读取并按原样尊重它们,但它们是无效的指针。
这是关于printf及其格式说明符的参考:
http://www.cplusplus.com/reference/clibrary/cstdio/printf/