学习目标
- 收藏文章报错可以过来查
[更新数据]
此文将会持续更新,收录错误信息,若本文没有收录记得联系我~ 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<stdio.h>
int main()
{printf("HelloWorld");
}
说明: 以上示例,在 printf("HelloWorld")
后的反括号错将英文的反括号")“打成了中文的”)"。新手不注意观察将会极难找到这个错误。
编辑器典型报错提示:expected ')' before ';' token
报错解析: 由于反括号")“错误打成了”)",导致编译器在解析代码时,发现成对的圆括号少了一半。编译器这时是懵的,所以通过编辑器问你expected ')' before ';' token
;这句报错表示“我需要在在分号前的括号你把他丢哪去了?我找不到了,你要还给我”。其实我们通过仔细观察中文的标点要比英文的标点大一点。
编写建议: 编写代码时最好是成对输入括号,不要输入一个括号后接着输入",然后又继续输入HelloWorld;推荐的方式是先输入成对的符号,例如先输入一对英文括号(),随后在一对括号中输入英文的双引号"",接着再往双引号内输入HelloWorld,这时就保证了标点符号的统一。
正确代码:
#include<stdio.h>
int main()
{printf("HelloWorld");
}
错误示例2 报错索引: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘<’ token
简介: 依旧使用第一个C语言程序“HelloWorld”,在一部分新手学习的时候,经常会出现在头文件饮用前少打#号的情况;这时候去搜索报错,问题依旧找不到解决办法。
错误示例:
include<stdio.h>
int main()
{printf("HelloWorld");
}
说明: 以上示例,在 include<stdio.h>
前,少打了#号,由于可能会与某一些语言的“#”号注释记混,就导致了该问题。
编辑器典型报错提示:expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
报错解析: 由于少打了#号,导致编译器在解析代码时,“胡言乱语”,因为头文件声明并没有太多的内容给予编译器提示,编译器只知道,你在<号前少了什么东西,反正就是错了,编译器自己也很懵。所以通过编辑器问你expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
;这句报错表示“我现在啥都不知道,我只懂你在这个地方搞错了。因为我被你吓到了,我自己都差点胡言乱语”。这个时候可能你上网搜都搜不到对应的解决办法,那是因为这个错,可能错的不错(有点尴尬)。
编写建议: 头文件就记住#开头就ok。
正确代码:
#include<stdio.h>
int main()
{printf("HelloWorld");
}
错误示例3 警告索引: incompatible implicit declaration of built-in function ‘printf’
简介: 依旧使用第一个C语言程序“HelloWorld”,在一部分新手学习的时候,经常会漏掉头文件的输入,当然这个问题在某些情况下不会报错,可能会提示一个警告。
错误示例:
int main()
{printf("HelloWorld");
}
说明: 以上示例,没有输入头文件 #include<stdio.h>
前。
编辑器典型报错提示:[Warning] incompatible implicit declaration of built-in function 'printf'
报错解析: 由于少打了图问价引用,导致编译器在解析代码时给你了点人情,毕竟头文件知道printf这些熟人是哪个地方的,所以就免为其难的帮了你一下。
编写建议: 头文件是代码中使用系统函数的支撑,你需要使用什么函数必须告诉编译器这些东西在哪,如果编译器不熟,它就无法帮你去找到这些东西。
正确代码:
#include<stdio.h>
int main()
{printf("HelloWorld");
}
错误示例4 报错索引: undeclared (first use in this function)
简介: 在编写C语言时,由于C语言是区分大小写的,若没达到设定的标记一致,则会出现错误;例如a与A是两个东西,Age和age也是两个东西。所以在进行程序别写时,一定要注意标记的统一。
错误示例:
#include<stdio.h>
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<stdio.h>
int main()
{int a=0;printf("%d",a);
}
错误示例5 报错索引: expected declaration or statement at end of input
简介: 在编写C语言时,由于C语言是有区块、有层级的,并且内容需要通过一定的符号表示当前层级或块的开始或结束,或者理解为有始有终。若在编写缺少开头标记或结束标记将会产生错误;较为容易出现的错误是结束标记的缺少。
错误示例:
#include<stdio.h>
int main()
{
说明: 以上示例,使用helloworld为示例,在helloWorld程序结束后并没有使用花括号进行结尾说明,导致编译器报错。
编辑器典型报错提示:expected declaration or statement at end of input
报错解析: 由于尾部没有添加结束符,编译器在进行编译的时候,发现尾部没有添加标记,所以就将这个信息告诉了你。那为什么编译器不自动帮你加上去?那是因为编译器编译的时候无法判断你是要做什么,不能从主观角度考虑你编写程序产生的错误,所以报错后只能自己修改。
编写建议: 编写代码时最好是成对输入括号,不要输入一个括号或后接着输入,推荐的方式是先输入成对的符号,例如先输入一对英文括号()或{},随后在在其中编写代码内容。
正确代码:
#include<stdio.h>
int main()
{printf("HelloWorld");
}
错误示例6 报错索引: 无报错
简介: 在编写C语言时,使用scanf接收值一定要注意取地址,变量取地址使用取地址符“&”。
错误示例:
#include<stdio.h>
int main()
{int a=0;scanf("%d",a);
}
说明: 以上示例, 在将至存入变量a时由于没有加取地址,这时编译器不会报错,因为这个地方是地址,变量a为0也可以作为地址,但是会发生不可估计的后果如程序运行时程序崩溃。
编辑器典型报错提示:无报错,编译顺利
报错解析: 无报错,但是程序运行时将会出现程序崩溃等情况”。
编写建议: 熟记语法规则,这是对整体编写规则的不了解。
正确代码:
#include<stdio.h>
int main()
{int a=0;scanf("%d",&a);
}
错误示例7 报错索引: 无报错
简介: 在编写C语言时,使用scanf接收多个值,在scanf中最好使用显式来表示%d或者其它格式说明符的间隔,若是%d%d默认使用空格隔开。
示例:
#include<stdio.h>
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<stdio.h>
int main()
{int a=0;int b=0;scanf("%d %d",&a,&b);printf("%d,%d",a,b);
}
错误示例8 报错索引: 无报错
简介: 在编写C语言时,使用两个等于号表示判断等于号左右两边的值是否相等;使用一个等于号表示将等于号右边的值赋值给左边。
错误示例:
#include<stdio.h>
int main()
{int a=0;if(a=1){printf("a等于1");}
}
说明: 以上程序if判断中将会一直判断正确,因为并没有使用两个等于号判断,一个等于号是赋值,这个结赋值操作是正确的,将会为Ture。
编辑器典型报错提示:无报错,编译顺利
报错解析: 无报错,if永远判断正确”。
编写建议: 熟悉语法规则。
代码:
#include<stdio.h>
int main()
{int a=0;if(a==1){printf("a等于1");}
}
错误示例9 报错索引: 无报错
简介: 在编写C语言时,使用switch若只想进行常规判断,则必须在每一个case块内,代码结束的末端添加break表示跳出;若未添加,则会导致错误程序一直运行到下一个case块内代码,直到结束或遇见break为止。
错误示例:
#include<stdio.h>
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<stdio.h>
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<stdio.h>
int main()
{int printf=0;printf("%d",printf);
}
**说明:**使用了输出函数printf作为变量,这是不允许的。
编辑器典型报错提示:called object 'printf' is not a function or function pointer
报错解析: 编译器告诉你,你这个东西用错了,在这里不是这样用的,反正编译器自己就是不给你用。就像你进一个学校,校长叫小明,你说你也叫小明为什么不能进。
编写建议: 熟悉变量命名规则。
代码:
#include<stdio.h>
int main()
{int printf_v=0;printf("%d",printf_v);
}
错误示例11 报错索引: 无报错
简介: 在编写C语言时,勿将越界使用数组。
错误示例:
#include<stdio.h>
int main()
{int a[2]={0,1};printf("%d",a[3]);
}
**说明:**使用了未确定的区域值,将会造成后果不可控,输出的值也是随机的。
编辑器典型报错提示:无
报错解析: 无。
编写建议: 检查数组,编写数组使用函数,检查长度再赋值。
代码:
#include<stdio.h>
int main()
{int a[2]={0,1};printf("%d",a[1]);
}
我的博客即将同步至 OSCHINA 社区,这是我的 OSCHINA ID:1_bit,邀请大家一同入驻:https://www.oschina.net/sharing-plan/apply