是不是很多零基础的朋友,写 C 语言程序时总被各种错误拦住?编译时红色的报错一大片,运行起来结果乱七八糟,对着屏幕看半天也找不到问题在哪儿。其实啊,c 语言程序设计实例里的常见错误就那么几种,搞懂了它们的样子和修改方法,零基础也能轻松搞定。今天兔子哥就把这些常见错误掰开了说,每个错误都带例子,保证你看完就知道咋改,一起往下看吧!
分号丢了,程序直接 “罢工”
这大概是新手最容易犯的错了,写代码时顺手就把分号忘了,结果编译直接报错。
比如写个简单的打印程序:
c运行
#include int main(){printf("我忘了加分号") // 这里少了个分号return 0;}编译的时候会提示 “语法错误”,光标可能还指在 return 那行,让人误以为是后面错了。其实啊,就是 printf 这行末尾少了个分号。修改方法特简单,在末尾加个;就行。
有个刚学 C 语言的朋友跟我说,他曾因为这个错改了半小时,后来发现就差个分号,气得想砸键盘。虽然这错误简单,但确实容易犯,尤其代码长了的时候,一行行检查很费劲。
scanf 里的 & 符号,漏了就 “失忆”
用 scanf 接收输入时,变量前面的 & 符号,十有八九的新手都会漏,结果就是程序运行了却收不到数据。
看这个例子:
c运行
#include int main(){int num;printf("请输入一个数字:");scanf("%d", num); // 这里num前面少了&printf("你输入的是:%d", num);return 0;}运行起来,你输入数字后,屏幕可能啥都不显示,或者弹出一堆乱码。这是因为 scanf 需要知道把数据存到内存的哪个位置,& 就是告诉它地址的。修改时,在 num 前面加个 &,变成 & num 就好。
不过话说回来,这个 & 符号也确实反直觉,刚开始总觉得多余,写多了才能记住。我当初学的时候,老师强调了三遍,我还是会忘,也是没谁了。
数组越界,程序 “发疯” 不报错
数组这东西最坑,你访问了不该访问的位置,编译器可能啥也不说,但运行起来就出怪事。
比如定义一个 5 个元素的数组,却访问第 6 个:
c运行
#include int main(){int arr[5] = {1,2,3,4,5};printf("%d", arr[5]); // 数组最大下标是4,这里越界了return 0;}运行后可能输出一个莫名其妙的数,甚至程序直接关掉。C 语言不管数组越界的事,全靠自己注意。修改的话,就把下标改成 0 到 4 之间的数。
有个同学用数组存成绩,因为越界,结果把班级平均分算成了负数,老师一眼就看出他代码有问题。这错误隐蔽性高,改起来得仔细检查循环条件,看看是不是多跑了一次。
逻辑错误,程序 “听话” 但做错事
这种错最头疼,编译运行都正常,就是结果不对,因为思路本身就错了。
比如写个程序判断一个数是不是偶数,结果写成了:
c运行
#include int main(){int num;printf("请输入一个数:");scanf("%d", &num);if (num % 2 = 0) // 这里应该是==,写成=了{printf("是偶数");}return 0;}这段代码编译能过,但不管输入啥数,都会显示 “是偶数”。因为 = 是赋值,== 才是判断相等。把 = 改成 == 就对了。
这种错误,编译器不会提醒你,全靠自己逻辑检查。有朋友说他曾写个排序程序,结果越排越乱,最后发现是循环里的判断条件弄反了。这说明啊,写逻辑的时候最好先在纸上画一画,别着急敲代码。
可能有人会问,这些错误都改对了,程序就一定能跑好吗?这也不一定,有些编译器特有的错误提示,具体原因我也还在研究。但大部分情况下,搞定这些常见错误,程序基本就能正常工作了。
兔子哥觉得,零基础学 C 语言,别怕犯错,错误反而是最好的老师。每次改完一个错,就把它记下来,下次再遇到就知道咋回事了。刚开始慢没关系,练得多了,对这些错误就敏感了,甚至写代码时能提前避开。希望这些能帮到你,有啥改不了的错,也可以来问我,咱们一起琢磨。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~