C语言新手的100个报错解法 已更新11个错误 您所在的位置:网站首页 mainactivityjava报错 C语言新手的100个报错解法 已更新11个错误

C语言新手的100个报错解法 已更新11个错误

2023-08-27 04:58| 来源: 网络整理| 查看: 265

学习目标 收藏文章报错可以过来查

[更新数据] 此文将会持续更新,收录错误信息,若本文没有收录记得联系我~ CSDN 1_bit 持续更新中… [发布日期:2020年11月16日 14:55:00] 更新: 暂无

C语言教程

C语言真的很难吗?那是你没看这张图,化整为零轻松学习C语言。 第一篇:(一)脱离学习误区 第二篇:(二)C语言没那么难简单开发带你了解流程 第三篇:(三)轻轻松松理解第一个C语言程序 第四篇:(四)语言的基本数据类型及变量 第五篇:(五)C语言的变量、常量及运算 第六篇:(六)轻轻松松了解C语言的逻辑运算 第七篇:(七)C语言的循环分分钟上手 第八篇:(八)了解基本数组还不是那么简单 第九篇:(九)C语言二维数组与循环嵌套 第十篇:(十)C语言的指针原来是这样 第十一篇:(十一)C语言自定义函数真的很简单 第十二篇:(十二)原来结构体是这么回事 第十三篇:(十三)socket服务端编写

推荐

欢迎大家关注公众号,公众号每满1024及1024倍数则会抽奖赠送机械键盘一份+IT书籍2份哟~ 在这里插入图片描述

最近发了C语言的基础教程,得了很多C语言初学者的支持,并且像我询问了很多问题;通过了解大多数的C语言新手的问题得知,大多数的同学都是犯的类似的错误,在此我编写一篇文,大家若出现问题,查看编辑器的提示报错信息,复制关键字后,在该文章搜搜内容,即可查看,若没有查询到可以联系我,我将在此文收录该错误~ 多谢支持~

错误及解决方案如下 错误示例1 报错索引:expected ‘)’ before ‘;’ token

简介: 第一个C语言程序“HelloWorld”,在一部分新手学习的时候,经常会出现中英文标点混打情况,在绝大多数编程中,标点符号皆是英文的标点符号。 错误示例:

#include int main() { printf("HelloWorld"); }

说明: 以上示例,在 printf("HelloWorld")后的反括号错将英文的反括号")“打成了中文的”)"。新手不注意观察将会极难找到这个错误。

编辑器典型报错提示:expected ')' before ';' token 报错解析: 由于反括号")“错误打成了”)",导致编译器在解析代码时,发现成对的圆括号少了一半。编译器这时是懵的,所以通过编辑器问你expected ')' before ';' token;这句报错表示“我需要在在分号前的括号你把他丢哪去了?我找不到了,你要还给我”。其实我们通过仔细观察中文的标点要比英文的标点大一点。 编写建议: 编写代码时最好是成对输入括号,不要输入一个括号后接着输入",然后又继续输入HelloWorld;推荐的方式是先输入成对的符号,例如先输入一对英文括号(),随后在一对括号中输入英文的双引号"",接着再往双引号内输入HelloWorld,这时就保证了标点符号的统一。 正确代码:

#include int main() { printf("HelloWorld"); } 错误示例2 报错索引: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘ printf("HelloWorld"); } 错误示例3 警告索引: incompatible implicit declaration of built-in function ‘printf’

简介: 依旧使用第一个C语言程序“HelloWorld”,在一部分新手学习的时候,经常会漏掉头文件的输入,当然这个问题在某些情况下不会报错,可能会提示一个警告。 错误示例:

int main() { printf("HelloWorld"); }

说明: 以上示例,没有输入头文件 #include前。

编辑器典型报错提示:[Warning] incompatible implicit declaration of built-in function 'printf' 报错解析: 由于少打了图问价引用,导致编译器在解析代码时给你了点人情,毕竟头文件知道printf这些熟人是哪个地方的,所以就免为其难的帮了你一下。 编写建议: 头文件是代码中使用系统函数的支撑,你需要使用什么函数必须告诉编译器这些东西在哪,如果编译器不熟,它就无法帮你去找到这些东西。 正确代码:

#include int main() { printf("HelloWorld"); } 错误示例4 报错索引: undeclared (first use in this function)

简介: 在编写C语言时,由于C语言是区分大小写的,若没达到设定的标记一致,则会出现错误;例如a与A是两个东西,Age和age也是两个东西。所以在进行程序别写时,一定要注意标记的统一。 错误示例:

#include int main() { int a=0; printf("%d",A); }

说明: 以上示例,定义了一个整型变量a,并且初始化值等于0;但是在输出变量a的时候错误的将a写成了A,导致错误的出现。

编辑器典型报错提示:[Error] 'A' undeclared (first use in this function) 报错解析: 由于将a打成了大写A,编译器在进行编译的时候,编译器发现这个A它是第一次遇见,并不知道是啥,所以就将这个信息告诉了你。 编写建议: 这种情况无法避免,通过报错提示是较为容易的解决方式,并且变量命名最好有“意义”,可以表达当前变量的含义。 正确代码:

#include int main() { int a=0; printf("%d",a); } 错误示例5 报错索引: expected declaration or statement at end of input

简介: 在编写C语言时,由于C语言是有区块、有层级的,并且内容需要通过一定的符号表示当前层级或块的开始或结束,或者理解为有始有终。若在编写缺少开头标记或结束标记将会产生错误;较为容易出现的错误是结束标记的缺少。 错误示例:

#include int main() {

说明: 以上示例,使用helloworld为示例,在helloWorld程序结束后并没有使用花括号进行结尾说明,导致编译器报错。

编辑器典型报错提示:expected declaration or statement at end of input 报错解析: 由于尾部没有添加结束符,编译器在进行编译的时候,发现尾部没有添加标记,所以就将这个信息告诉了你。那为什么编译器不自动帮你加上去?那是因为编译器编译的时候无法判断你是要做什么,不能从主观角度考虑你编写程序产生的错误,所以报错后只能自己修改。 编写建议: 编写代码时最好是成对输入括号,不要输入一个括号或后接着输入,推荐的方式是先输入成对的符号,例如先输入一对英文括号()或{},随后在在其中编写代码内容。 正确代码:

#include int main() { printf("HelloWorld"); } 错误示例6 报错索引: 无报错

简介: 在编写C语言时,使用scanf接收值一定要注意取地址,变量取地址使用取地址符“&”。 错误示例:

#include int main() { int a=0; scanf("%d",a); }

说明: 以上示例, 在将至存入变量a时由于没有加取地址,这时编译器不会报错,因为这个地方是地址,变量a为0也可以作为地址,但是会发生不可估计的后果如程序运行时程序崩溃。

编辑器典型报错提示:无报错,编译顺利 报错解析: 无报错,但是程序运行时将会出现程序崩溃等情况”。 编写建议: 熟记语法规则,这是对整体编写规则的不了解。 正确代码:

#include int main() { int a=0; scanf("%d",&a); } 错误示例7 报错索引: 无报错

简介: 在编写C语言时,使用scanf接收多个值,在scanf中最好使用显式来表示%d或者其它格式说明符的间隔,若是%d%d默认使用空格隔开。 示例:

#include int main() { int a=0; int b=0; scanf("%d%d",&a,&b); printf("%d,%d",a,b); }

说明: 以上示例, 输入值时,需要输入一个值使用空格后再输入一个值再按enter键确认。或者输入一个值后按下enter,随后再输入一个值,此时将会给两个变量赋值。

编辑器典型报错提示:无报错,编译顺利 报错解析: 无报错,但是程序运行时自己不清楚如何赋值将会导致某一值赋值失败”。 编写建议: 推荐使用scanf("%d,%d",&a,&b);或其他字符间隔。 代码:

#include int main() { int a=0; int b=0; scanf("%d %d",&a,&b); printf("%d,%d",a,b); } 错误示例8 报错索引: 无报错

简介: 在编写C语言时,使用两个等于号表示判断等于号左右两边的值是否相等;使用一个等于号表示将等于号右边的值赋值给左边。 错误示例:

#include int main() { int a=0; if(a=1){ printf("a等于1"); } }

说明: 以上程序if判断中将会一直判断正确,因为并没有使用两个等于号判断,一个等于号是赋值,这个结赋值操作是正确的,将会为Ture。

编辑器典型报错提示:无报错,编译顺利 报错解析: 无报错,if永远判断正确”。 编写建议: 熟悉语法规则。 代码:

#include int main() { int a=0; if(a==1){ printf("a等于1"); } } 错误示例9 报错索引: 无报错

简介: 在编写C语言时,使用switch若只想进行常规判断,则必须在每一个case块内,代码结束的末端添加break表示跳出;若未添加,则会导致错误程序一直运行到下一个case块内代码,直到结束或遇见break为止。 错误示例:

#include int main() { int a=0; switch(a){ case 0: printf("等于0\n"); case 1: printf("等于1\n"); break; case 2: printf("等于2\n"); default: printf("未知\n"); } }

说明: 以上进行case判断后将会运行 printf("等于0\n");以及printf("等于1\n");代码。

编辑器典型报错提示:无报错,编译顺利 报错解析: case判断正确后将会一直运行之后未加break的case块代码。 编写建议: 熟悉语法规则。 代码:

#include int main() { int a=0; switch(a){ case 0: printf("等于0\n"); break; case 1: printf("等于1\n"); break; case 2: printf("等于2\n"); break; default: printf("未知\n"); } } 错误示例10 报错索引: called object ‘printf’ is not a function or function pointer

简介: 在编写C语言时,勿将系统函数或其它有含义的标记作为变量或其它使用。 错误示例:

#include int main() { int printf=0; printf("%d",printf); }

**说明:**使用了输出函数printf作为变量,这是不允许的。

编辑器典型报错提示:called object 'printf' is not a function or function pointer 报错解析: 编译器告诉你,你这个东西用错了,在这里不是这样用的,反正编译器自己就是不给你用。就像你进一个学校,校长叫小明,你说你也叫小明为什么不能进。 编写建议: 熟悉变量命名规则。 代码:

#include int main() { int printf_v=0; printf("%d",printf_v); } 错误示例11 报错索引: 无报错

简介: 在编写C语言时,勿将越界使用数组。 错误示例:

#include int main() { int a[2]={0,1}; printf("%d",a[3]); }

**说明:**使用了未确定的区域值,将会造成后果不可控,输出的值也是随机的。

编辑器典型报错提示:无 报错解析: 无。 编写建议: 检查数组,编写数组使用函数,检查长度再赋值。 代码:

#include int main() { int a[2]={0,1}; printf("%d",a[1]); }

我的博客即将同步至 OSCHINA 社区,这是我的 OSCHINA ID:1_bit,邀请大家一同入驻:https://www.oschina.net/sharing-plan/apply



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有