我有一个非常简单的C程序。总的来说,我有这个操作:

int main(){
  int theNumber = 9009;
  printf("%s", (char *)theNumber);
}

而当我运行它时,它给了我一个段错误。知道为什么吗?我做错了吗?

预期产量

此代码应将theNumber转换为字符串,然后打印出来。因此输出为:
9009

实际产量

分段错误。

最佳答案

这试图打印在地址9009上找到的任何内容。好像操作系统没有给您的程序访问该地址的权限(很可能将其完全用于其他用途),操作系统会引发分段错误。在这里阅读更多:What is a segmentation fault?

如果您真的只想打印整数值,请使用正确的printf命令:

int main(){
  int theNumber = 9009;
  printf("%d", theNumber);
}

请注意,您无需在此处引入字符串即可实现此目的。

关于c - 在C中将int转换为char时出现段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24460649/

10-08 21:06