#C语言的基本数据类型直接与底层的硬件相对应。
#宏最好只用于命名常量,并为一些适当的结构提供简捷的记法。
#千万不要使用C预处理器来修改语言的基础结构。
#一个严格的可移植的程序应该是:
1 只使用已确定的特性
2 不突破任何由编译器实现的限制
3 不产生任何依赖由编译器定义的或未确定的或未定义的特性的输出。
#程序的可移植性是非常重要的,所以在你的现实编码中,应该始终哟啊保证加上必要的类型转换,返回值等。
下面的程序并不是严格遵循标准的,因为输出结果由编译器定义的:
#include <stdio.h>
#include <limits.h>
int main()
{
(void)printf("the biggest int is %d",INT_MAX);
getchar();
return 0;
}
#关于运算符优先级问题,最好是加上括号,不确定的时候进行查找确认。
我们需要记住重要的几点:
1 任何一个逻辑运算符的优先级 < 任何一个关系运算符
2 关系运算符<移位运算符<算术运算符
# C语言中只有一维数组,而且数组的大小必须在编译期间就作为常数确定下来。
#库函数strlen返回参数中字符串所包括的字符数目,而作为结束标志的空字符并为计算在内。
#如果我们使用数组名作为参数,那么数组名会立刻被转换为指向该数组第1个元素的指针。因此数组作为函数参数毫无意义。所以,C语言会自动地将作为参数的数组声明转换为响应的指针声明。
#在无符号算术运算中,没有所谓的“溢出”一说;如果算术运算符的一个操作数是有符号,一个是无符号,那么有符号整数会被转化成无符号整数,溢出也不可能发生。
假定a和b是两个非负整形变量,我们需要检查a+b是否会溢出,一种想当然的办法是
if(a + b < 0)
complain();
这并不能运行,当a+b确实溢出时,所有关于结果如何的假设都不再可靠。
实现办法:
if((unsigned)a + ((unsigned)b > INT_MAX)
complain();
分享到:
相关推荐
C语言缺陷和陷阱.pdf
C陷阱与缺陷
《C陷阱与缺陷》是人民邮电出版社2008年出版的书籍,作者是(美)凯尼格。全书分为8章,分别从词法分析、语法语义、连接、库函数、预处理器、可移植性缺陷等几个方面分析了C编程中可能遇到的问题。最后,作者用一章...
C语言缺陷和陷阱 C语言是一种功能强大且灵活的编程语言,但是它也存在一些缺陷和陷阱,需要程序员小心避免。在这篇文章中,我们将介绍C语言中的常见缺陷和陷阱,以及如何避免它们。 首先,让我们来讨论C语言的词法...
C陷阱与缺陷读书笔记的整理pdf,可打印
精心整理,C语言学习必修,WORD文档,经典,好不容易找到的,感谢作者!
C语言缺陷与陷阱(笔记).txt C语言缺陷与陷阱(笔记).txt
C语言陷阱和缺陷与读书笔记word档,对初学者是一本必不可少的好书~~
第三部分研究了由多个部分组成、分别编译并绑定到一起的C程序。第四部分处理了概念上的误解:当一个程序具体执行时会发生的事情。第五部分研究了我们的程序和它们所使用的常用库之间的关系。在第六部分中,我们注意...
本科各学科笔记扫描版本
字符和字符串、防御性编程、嵌套注释、词法分析的“大嘴原则”等需要注意的缺陷与陷阱。
C语言缺陷与陷阱(笔记).docC语言缺陷与陷阱(笔记).docC语言缺陷与陷阱(笔记).docC语言缺陷与陷阱(笔记).docC语言缺陷与陷阱(笔记).doc
C指针与陷阱 中文高清版
C语言缺陷与陷阱(笔记) 对正在学习C语言的同学,有点帮助
C语言学习资料C语言技术编程经验分享C指针经验总结资料合集(25个): c99标准.pdf C指针经验总结.pdf C程序设计语言.pdf ...《C陷阱与缺陷》学习笔记.txt 一份不错的C语言指针教程.pdf 再再论指针.pdf
c++批判(第三版,英文版) PDF电子书
此外,C陷阱与缺陷、C和指针、C语言参考手册、代码整洁之道、C语言趣味算法、C语言详解、C Primer Plus、妙趣横生的算法(C语言实现)、嵌入式Linux_C语言应用程序设计等等书籍都已经上传,并且全部免费!...
那该如何学C语言呢?希望我整理的 C语言的学习路线,能对你有帮助!...对C语言有一定认知之后,就可以通过《C和指针》和《C专家编程》以及《C陷阱与缺陷》等高阶图书学习C语言中最重要的指针等内容了。
那该如何学C语言呢?希望我整理的 C语言的学习路线,能对你有帮助!...对C语言有一定认知之后,就可以通过《C和指针》和《C专家编程》以及《C陷阱与缺陷》等高阶图书学习C语言中最重要的指针等内容了。