是不是很多新手朋友写 C 语言程序时,明明觉得思路没问题,可一编译就一堆报错,或者运行结果乱七八糟?对着错误提示发呆半天,也找不到问题出在哪儿。其实啊,这些错误大多是新手常犯的,只要知道了常见错误类型和修改方法,很快就能搞定。今天兔子哥就把这些年见过的、还有自己踩过的坑,整理成常见错误和修改方法,新手如何快速解决编程错误,看完这篇你再遇到类似问题,肯定能少走很多弯路,一起往下看吧!
先说说最基础也最容易犯的 ——忘记加分号。这个错看着简单,可真能让人抓狂,尤其是代码多的时候。
比如写一个打印语句,错误代码可能是这样:
c运行
#include int main(){printf("Hello World") // 这里少了个分号return 0;}编译的时候会提示 “语法错误” 或者 “缺少分号”。怎么改?在 printf 那行末尾加个分号就行,就这么简单。兔子哥刚开始学的时候,因为漏了分号,盯着屏幕找了十分钟才发现,现在想起来都觉得好笑。
再来看scanf 函数漏写 & 符号,这也是新手高频错误。比如输入一个整数:
c运行
#include int main(){int a;printf("请输入一个数:");scanf("%d", a); // 这里a前面少了&printf("你输入的是:%d", a);return 0;}运行的时候可能啥反应都没有,或者输出一堆乱码。为啥?因为 scanf 需要知道把数据存到哪个地址,& 就是取地址的意思。修改方法很简单,在 a 前面加个 &,变成 scanf ("% d", &a); 就行。这个错我当年的学生里,十个有八个个都犯过,真不是开玩笑。
还有数组越界,这个错更隐蔽,编译可能不报错,但运行结果会出问题。比如定义一个长度为 5 的数组,却访问第 6 个元素:
c运行
#include int main(){int arr[5] = {1,2,3,4,5};printf("%d", arr[5]); // 数组下标最大是4,这里越界了return 0;}运行的时候可能输出一个奇怪的数字,甚至程序直接崩溃。C 语言不检查数组越界,所以得自己注意。修改方法就是确保访问的下标在 0 到数组长度 - 1 之间。比如上面的例子,arr [4] 才是最后一个元素。
变量没初始化也是个大问题。比如计算两个数的和,却忘了给变量赋值:
c运行
#include int main(){int a, b, sum;sum = a + b; // a和b没初始化,里面是随机值printf("和是:%d", sum);return 0;}输出的结果肯定不对,因为 a 和 b 里存的是内存里的随机数。怎么改?要么在定义时初始化,比如 int a=0, b=0; 要么在计算前用 scanf 让用户输入值。这个规矩,变量不用就别定义,要用就得给个初始值,不然坑的是自己。
咱们来个表格表格对比一下这些常见错误,看得更清楚:
| 错误类型 | 错误代码示例 | 修改方法 | 错误原因 |
|---|---|---|---|
| 忘记加分号 | printf("Hello") | 末尾加;变成 printf ("Hello"); | C 语言语句必须以分号结束 |
| scanf 漏写 & | scanf("%d", a) | 改成 scanf ("% d", &a) | 需要变量地址才能存储数据 |
| 数组越界 | arr [5](数组长度为 5) | 改为 arr [4] 以内的下标 | 下标超过数组最大索引 |
| 变量未初始化 | int a; sum = a + 3; | 先给 a 赋值,如 a=0; | 未初始化变量值随机 |
可能有人会问,这些错误怎么才能快速找出来呢?其实编译器的错误提示很重要,虽然有时候说得有点绕,但大多能指出错误在第几行。比如提示 “syntax error before 'return'”,那大概率是 return 前面的语句漏了分号。还有就是多调试,一行行看代码,特别是变量的值变化,慢慢就有感觉了。
那有没有什么办法能减少这些错误呢?兔子哥的经验是,写代码慢一点,每写几行就回头看看,比如写完 printf 就检查分号,写完 scanf 就看看有没有 &。还有就是多练,犯过的错记下来,下次就不容易再犯。刚开始写代码谁还不犯错啊,关键是别在同一个坑里摔两次。
我觉得啊,解决错误的过程其实也是进步的过程。每次改对一个错,你对 C 语言的理解就深了一点。别害怕报错,报错总比程序悄悄出错要好。遇到实在解决不了的,也可以问问身边的人,或者到网上查查,办法总比困难多。希望这些能帮到你,祝你写代码顺利,少犯点错,哈哈。
标签: 乱七八糟 Hello World
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~