当前位置:编程学习 > C/C++ >>

C语言程序的注意事项?

答案:C    语言[1]是一种面向过程的计算机程序设计语言,它是目前众多计算机语言中举世公认的优秀的结构程序设计语言之一。它由美国贝尔研究所的D.M.Ritchie于1972年推出。1978后,C语言已先后被移植到大、中、小及微型机上。  C语言发展如此迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。许多著名的系统软件,如DBASE Ⅳ都是由C 语言编写的。用C 语言加上一些汇编语言子程序,就更能显示C 语言的优势了,像PC- DOS 、WORDSTAR等就是用这种方法编写的。 编辑本段C 语言特点:  C语言   

avr单片机c语言高级程序设计

是一种成功的系统描述语言,用C语言开发的UNIX操作系统就是一个成功的范例;同时C语言又是一种通用的程序设计语言,在国际上广泛流行。世界上很多著名的计算公司都成功的开发了不同版本的C语言,很多优秀的应用程序也都使用C语言开发的,它是一种很有发展前途的高级程序设计语言。  1. C是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。  2.C是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。  3.C语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。另外C语言也具有强大的图形功能,支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。   

c语言

4. C语言适用范围大。适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。  C语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。  C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。  5.C语言文件由数据序列组成,可以构成二进制文件或文本文件   常用的C语言IDE(集成开发环境)有Microsoft Visual C++,Dev-C++,Code::Blocks,Borland C++,Watcom C++ ,Borland C++ Builder,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,High C,Turbo C,C-Free,win-tc 等等……   对于一个初学者,Microsoft Visual C++是一个比较好的软件。界面友好,功能强大,调试也很方便。

一、C语言初学者常犯错误:

1.“==”误写成“=”

2.case后忘了加break

3.scanf中忘了&

4. for后想用复合语句却忘了加”{}”

5. #开头的预编译指令后误加了”;”

6. 符号用了中文输入法

7. i++与++i混淆

8.实现swap()函数时没有使用指针作为参数

9. 忘了数组的合法下标范围是[0,N-1]

10. 用字符数组存放字符串时忘了为’\0’留位置

11. malloc()后忘了free()

12. fopen()后忘了fclose()

13. #include自己的文件时应该用”XXX.h”而不是<XXX.h>

14. 使用绘图函数时忘了在TC中选中Options->Linker->Libraries->Graphic Library

15. 误认为sizeof(int)永远等于2

16. 3/2等于1而不是1.5

17.混淆&&和&,混淆单引号和双引号

18. 忘了写函数的返回类型.没有返回类型时要写void,如果不写会默认返回int(对于老编译器)

19. 误将局部变量的地址针返回

20. 对文件开发时,将.c与.cpp文件混用(会引发LNK ERROR)

21. 结构体定义的”}”后忘了加”;”

22. 结构体名前忘了加struct(对于老编译器)

23. 混淆”.”与”->”

24. 递归无法终止(引发Stack Overflow)

25.while的退出条件写倒了

26. 在while循环中忘了让某个东西++,导致死循环. while循环前忘了给循环变量赋初值

27. 指针被释放后又继续使用;或某一地址被其他的指针释放了,后来又试图访问那块地址

28. 同一个地址被free()两次

29. 文件名路径中忘了用”\\”替代”\”

30. 变量忘了赋初值

 

二. 若干建议/提醒

1.      给float型变量赋值别忘了在数字后加f,如 float num=5.0f , 输入输出double型变量时用%lf而不是%d

2.      注意缩进,最好用Tab键缩进而非空格键

3.      变量和函数的名字要有意义,长度平均为8~10,最忌使用x,xx,a之类的名字

4.      大括号先成对写出,再往里面追加内容

5.      合理使用空行

6.      注释写在一行的后面或上面,不要写在下面. 更新代码时别忘了更新注释

7.      直接make或build, 不需要先compile再link

8.      调试时加倍注意边界情况

9.      为了减少手动输入的痛苦,调试时合理使用文件输入

10.  TC中单步运行为F8, Trace into为F7; VC中单步运行为F10, Trace into为F11

11.  合理使用断点(breakpoint)和监视(watch)

12.  VC中想要查看运行结果,可以在程序最后加上一个或两个getchar()

13.  不用的语句先注释掉,而不是删掉

14.  变量和函数名中合理使用大小写

15.  对数组初始化为0的工作,试试memset()函数

16.  运行时出现含有”access violation”字样的错误提示框,多半是指针错误或数组越界

17.  指针声明时和释放后马上赋值为0, 使用前尽量先检查它是否为0

18.  for循环的头部内部要做其他事情

19.  浮点数永远存在误差!不要判断一个浮点数是否为0,取而代之的是判断它是否在0左右; 1.0/10.0并不等于0.1(可能是0.0999999999)

20.  getchar()可能会把上一次的回车读入

21.  当文件读取完后,再试图读了一次,feof()才会返回真

22.  少用全局变量,尽量用参数传递信息

23.  指针也可以用”[  ]”,与数组相同

24.  合理使用条件表达式的”短路”功能,如 if(p!=0&&*p==’a’){…….}

25.  定义char *p=”……”;后不能修改字符串的内容,如 p[2]=’a’ 是错误的

26.  多用#define定义常量,少出现数字

27.  return后不用加括号

28.  谨慎使用带参数的#define

分享到搜狐微博
c语言注意事项

1. 算术转换

    任何运算符在计算时都会引起转换,以类似的方式产生结果类型。如 int 和 double 型相加,int 型的操作数会先被转变为 double 型,而后做加法运算。

    什么?已经懂了。那么看看下面的运算结果是如何?

    -1 < 1

    -1 > (unsigned int)1

    -1 < (unsigned char)1

    -1 > sizeof(int)

    很多人一定对运算结果很好奇,但以上几个运算结果都是正确的。

    ANSI C规定: 当执行算术运算时,操作数的类型如果不同,就会发生转变。数据类型一般朝着 浮点精度更高、长度更长的方向转换,整型数据如果转换为 signed 不会丢失信息,就转换为signed,负责转换为 unsigned。

    第二个例子中,两个操作数均被转换为 unsigned int 型数据,-1 的unsigned 型为 0xFFFFFFFF,远大于1.(假设unsigned int 为32bits)

    第三个例子中,两个操作数均被转换为 int 型数据。

    第四个例子中,sizeof 返回 unsigned int 型,故两个操作数均被转换为unsigned int 型数据。

2. 运算次序

    编写程序时,除了要注意运算符的优先级外,还要注意运算次序。下面的例子中b最后为多少?

    int main() {

        int a=1, b=2, c;

        if(a ||(b--))

            c=2;

        return 0;

    }

    b=1?错!b仍然为2,因为b--根本就未被执行过。

    在c语言中,除了&& , || 外,其他操作符都是没有操作次序的。而&& 和 || 都是先执行左边,再执行右边,一旦左边的值能确定最终运算结果,右边值将不被计算。

    再看一个例子:

    int a=1, b=2, c;

    c = a--? a:b;

    由于我们不知道编译器到底先取 ? 右边的a地址,还是先取左边的a--地址,所以c的值将不确定。

3. 不要将定义为某个函数内部局部变量的指针作为该函数的返回值

    还是先看一个例子: <

上一个:C语言程序求改错
下一个:C语言求完数。

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,