鱼C论坛

 找回密码
 立即注册
查看: 3941|回复: 5

[已解决]s1e29动动手0.疑问和题目没有太大关系,只是不明白哪里用了溢出

[复制链接]
发表于 2022-11-12 08:36:22 | 显示全部楼层    本楼为最佳答案   
先说编码问题,其实您的编译器本应该协助您解决这些问题的。看看我使用的编译器是怎么评价您的代码的:
  1. test.c:10:13: warning: converting the result of '<<' to a boolean; did you mean '(a << 0) != 0'? [-Wint-in-bool-context]
  2.         if(a<<0)  //判断正负值。如果是负数,将符号‘-’存入数组array第一个位置
  3.             ^
  4. test.c:6:19: warning: unused variable 'flag' [-Wunused-variable]
  5.         int i=0,j,flag=0,m; //结果位数i计算
  6.                   ^
  7. test.c:30:1: warning: non-void function does not return a value [-Wreturn-type]
  8. }
  9. ^
  10. 3 warnings generated.
复制代码

理解和解决了这些问题,就理解和解决了您目前出现的段错误。
当然,您的代码除此之外还有逻辑上的问题,还需要后续的修改才能得到正确的结果,您可以先尝试,遇到无法解决的问题欢迎继续提问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-14 10:11:20 | 显示全部楼层
顶级太阳 发表于 2022-11-13 19:28
谢谢您的答复,根据你的编译器提示,我找到了溢出的位置,也对逻辑进行了修正,已经完成了题目。好奇问一 ...

得到之前回复里的输出的编译器和版本是
  1. clang version 14.0.6
复制代码

当然, gcc 也可以得到类似的结果(这里我改了一下源代码文件名):
  1. test2.c: In function ‘myitoa’:
  2. test2.c:10:13: warning: ‘<<’ in boolean context, did you mean ‘<’? [-Wint-in-bool-context]
  3.    10 |         if(a<<0)  //判断正负值。如果是负数,将符号‘-’存入数组array第一个位置
  4.       |            ~^~~
  5. test2.c:6:19: warning: unused variable ‘flag’ [-Wunused-variable]
  6.     6 |         int i=0,j,flag=0,m; //结果位数i计算
  7.       |                   ^~~~
  8. test2.c:30:1: warning: control reaches end of non-void function [-Wreturn-type]
  9.    30 | }
  10.       | ^
复制代码

版本是
  1. gcc (GCC) 12.2.0
复制代码

您可以试着给您的编译命令加上额外的调试选项,我一般常用的是(在此处使用的也是) -Wall -Wextra -fsanitize=address ,即改为
  1. gcc -Wall -Wextra -fsanitize=address test.c
复制代码

相关选项的含义可以在这里查找对应您使用的版本的文档: https://gcc.gnu.org/onlinedocs/
如最新版的选项总结在这里: https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/Option-Summary.html
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-24 03:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表