代码编织梦想

c语言易错知识点总结

篇一:c语言易错知识

C语言教学中学生容易出错的知识点解析

0引言

C语言是一种很灵活的语言,在程序调试过程中常常会

遇到一些难解决的问题,一般语法错误计算机能检测出来,

而逻辑错误计算机则检测不出来。这给教师的教学带来比较

多的麻烦,也大大削减了学生学习的自信心。本文结合笔者 多年教学经验,把学生容易出错的知识点进行总结,以供C

语言教学参考。1教学实例

以下实例均在Turbo C环境下调试运行。

递增(减)运算符的表达式

例如:i=3,a=(++i)+(++i)+(++i);

大多数学生都知道i++和++i的最终结果都是使i的值 加1,但i++和++i作为表达式的用途是不一样的,++i是“先

加后用”,i++是“先用后加”。上面的题目是“++”运算

符最典型的应用,其中a的结果是18,而不是有些书上分析 的4+5+6=15。因为在这里要考虑运算符的优先级,很显然

“ ++” 的优先级高于 “ +”。若是 “ i=3,a=(++i)+(++i)+(++i)”

则a结果是9,而两者最终的i值都将自增3即为6。“一” 运算符和“ ++”运算符使用方式一样,不再赘述。

输入语句中缺取址符&

例如:scanf( “ %d ,x);

这一语句错在x前缺取址符,导致输入的数值没有赋给 变量x,所以结果出错。再如:char a[10];scanf( “%S,&a); 有学生想,输入语句的输入变量前一定要加取址符,所以这 个语句里加了取址符,肯定不会出错。而结果却又恰恰错了, 这是为什么呢?因为 a在这里既表示数组名字,又表示数组 首地址,它本身已经代表了地址, 所以就不用再加取址符了。 解决此类问题的办法就是在使用输入语句的时候要仔细观 察,什么时候该加取地址符号,什么时候不该加,一定要搞 清楚。

逻辑运算符&&和位运算符&相混淆

例如:if(x&y)

xx人员此判别条件的本意是将x和y的“与” (&&)运

算结果作为条件。程序运行时,并不出错,但是结果却不对。 原因是误用按位“与”运算符&替代了 “与”运算符 &&这

种错误初学者很容易犯,但是又十分隐秘,在某些特殊情况 下甚至可以得出正确的结果,所以更具有迷惑性。位运算符 是C语言独特的一种运算符,其中“&”表示对两个操作数

按二进制位进行“与”运算,规则是: 0&0=0,0&1=0,1 &0=0,1 &1=1。如 6&5=4,其中 6 变为 5变按位“与”运算的结果为 100即4。

误把赋值=当恒等==

例如:if(a==O)误写成 if(a=O)。

上述写法将导致条件始终为假,进入不了if语句条件

为真的分支。编程的时候要仔细,要遵守c语言的语法规则。

条件语句(if)和循环条件语句后误加分号

例如:if(x>y);x=y;

这样相当于满足条件执行空语句。下面的x=y语句将被

无条件执行。一般情况下if条件后不需要加分号。

例如:for(i=1;imax)

{max=a[i]; m=i;}

printf(“ %d%” ,max,m);

}

程序看似一点毛病都没有,上机调试也都通过,但是结

果却不对。原因就在下标变量m没有赋初值,系统随机赋了

初值,导致结果错误。给m赋初值0就可以了。

初值赋了,但是赋的位置不对

例如:求100以内的完数

s=0;

for(i=1;i 篇二:C语言知识点总结【完美版】

C语言最重要的知识点

总体上必须清楚的:

程序结构是三种:顺序结构、选择结构(分支结

构)、循环结构

2)读程序都要从main入口,然后从最上面顺序往下读

(碰到循环做循环,碰到选择做选择),有且只有一个 main函 数。

3)计算机的数据在电脑中保存是以二进制的形式.数

据存放的位置就是 他的地址.

4)bit是位是指为0或者1。byte 是指字节,一个字 节=第五节:整数与实数

1)C语言只有八、十、十六进制,没有二进制。但是运 行时候,所有的进制都要转换成二进制来进行处理。(考过 两次)

a、 C语言中的八进制规定要以0开头。(数码取值0-7)

018的数值是非法的,八进制是没有8的,逢8进1。

b、 C语言中的十六进制规定要以0x(X)开头。(数码 取值 0-9,a-f,A-F)

C.十进制没前缀,数码取值 0-9

2)小数的合法写法:C语言小数点两边有一个是零的话, 可以八个位.概念常考到的:

1、编译预处理不是C语言的一部分,不占运行时间,

不要加分号。C语言编译的程序称为源程序,它以ASCII数

值存放在文本文件中。

误的,一定不能出现分号

3、每个C语言程序中main函数是有且只有一个。4、

在函数中不可以再定义函数。

5、算法:可以没有输入,但是一定要有输出

c语言取整方法-爱代码爱编程

//实验环境:vc6.0 (1)使用int强制转换 使用int强制转换的结果就是去掉小数部分。 int a; a=int(1.2); //a=1 a=int(-1.2); //a=-1 (2)使用

c语言中方括号浅见_mangonova的博客-爱代码爱编程_c语言方括号什么意思

2018-4-22更新: 今天发现了新东西,然后试了下,发现下面那个p[n]相当于* (p+n)的结论会导致一个非常有意思的东西,也就是:取某个数组元素比如arr[3]的时候,写成3[arr]也是完全可以编译通过的,因为

matlab中矩阵的特性与基本运算(一)(周一)_fomalhaut14的博客-爱代码爱编程

一、矩阵操作 1.矩阵的生成 (1).在命令窗口中直接列出: >> a=1,b=2,c=3; a = 1 b = 2 >> M={a,b,c;a+b,b+c,c+a;a*b,b*c,c*a} M = [1] [2] [3] [3] [5] [4]

c语言易错点汇总(二)_不捡风筝的玖伍贰柒的博客-爱代码爱编程

三、关键字        我们都知道 ANSI C 标准中 C 语言共有 32 个关键字。后面 ISO 的 C99 标准和 C11 标准又分别增加了 5 个和 7 个关键字。本文无意介绍各个标准之间的恩恩怨怨,感兴趣的可以上网查查,包括后面新增的这 12 个关键字。本节将集中介绍 ANSI C 标准中的 32 个关键字,不过有些简单或是出现频率较低的关键

c语言编程时碰到取整去不了_碰到编程墙时如何解开-爱代码爱编程

c语言编程时碰到取整去不了 Getting stuck is part of being a programmer, no matter the level. The so-called “easy” problem is actually pretty hard. You’re not exactly sure how to move forwar

C语言编程易错点总结-爱代码爱编程

目录 前言一、运算类除法运算过程中的类型转换&& 与 ||自増与自减逻辑短路! 与 ~右移运算二、变量类静态局部变量static全局变量volatile变量整形变量浮点变量三、数组类数组长度多维数组字符串四、指针类内存泄漏内存溢出野指针重复释放const对象文件操作五、预处理类头文件包含宏定义替换带参数的宏六、输入输出类缓冲区溢出参