当前位置:网站首页>C陷阱和缺陷 第0章 导读
C陷阱和缺陷 第0章 导读
2022-07-20 11:21:00 【weixin_客子光阴】
#include <stdio.h>
main() {
printf("Hello world");
}
编译结果:
一次通过。
运行结果:
Hello world%
解释原因:
%字符是系统提示符,操作系统用它来提示用户输入。因为在程序中没有写明“Hello world”
应该换行,所以系统提示符%直接出现在输出“Hello world”消息之后。这个程序还有一个
更加难以察觉的错误,以后再进行说明。
#include <stdio.h>
#include <stdlib.h>
int main( void ) {
printf("Hello world");
return EXIT_SUCCESS;
}
/* 输出:
*/
问题类型:
第二类问题,也就是程序并没有按照程序员所期待的方式执行(C语言程序)
int i;
int a[N];
for (i = 0; i <= N; i++) {
a[i] = 0;
}
代码用意:
初始化一个N元数组。
正确的初始化一个N元数组的方式为:
for (i = 0; i < N; i++) {
a[i] = 0;
}
运行结果:
在很多C编译器中,它将会陷入一个死循环。
心智模式(mental model)
程序构成:
从较低的层面考察,程序是由符号(token)序列构成的,正如一本书是由一个一个字词所组成的一样。
词法分析:
将程序分解成符号的过程。
语句和声明:
组成程序的符号,又可以看成是语句和声明的序列,就好像一本书可以看成是由单词进一步结合而成的句子所组成的集合。无论是对于书而言,还是对于程序而言,符号或者单词如何组成更大的单元(对于前者是语句和声明,对于后者是句子)的语法细节最终决定了语义。
语义细节:
第3章处理有关语义细节的问题:程序员的本意是希望表示某种事物,而实际表示的却是另外一种事物。
链接器:
第4章注意到这样一个事实:C程序经常是由若干个部分构成,它们分别进行编译,最后再整合起来。这个过程称为“链接”,是程序和其支持环境之间关系的一部分。
库函数:
程序的支持环境包括某组库函数(library routine)。虽然库函数并不是语言的一部分,但是它对任何一个有用的程序都非常重要。尤其是,有些库函数几乎会在某个C程序中都要用到。
预处理器:
第6章,由于C预处理器的介入,实际运行的程序并不是最初编写的程序。
可移植性问题:
第7章讨论了可移植性问题,也就是为什么在一个实现平台上能够运行的程序却无法在另一个平台上运行。
建议和参考答案:
第8章提供了有关预防性程序设计的一些建议,还给出了其他章节的练习解答。
附录:
附录讨论了3个常用的却普遍被误解的库函数。
边栏推荐
猜你喜欢
动态内存管理(malloc,free,calloc,realloc,柔性数组)
Babang MS Marco! Transformer based hybrid list aware sorting model
【Ping检测】使用Ping命令检查网络连接情况
国内外知名源码商城系统盘点
霸榜MS MARCO!基于Transformer的混合列表感知排序模型
深入理解Mysql事务隔离级别与锁机制
【Flutter -- 基础组件】文本组件 Text & TextStyle & TextSpan
C language (high-level) file operation + Practice
How to download video files
【Flutter -- 基础组件】图片组件 Image & Icon
随机推荐
吃CPU的openmp 程序「建议收藏」
使用ECS和OSS搭建个人网盘
深入理解Mysql事务隔离级别与锁机制
C陷阱与缺陷 第2章 语法“陷阱” 2.5 函数调用
ES6 async 与 await 怎么使用(基础)
【重识云原生】第四章云网络4.9.5.1节下一代智能网卡——DPU综述
Deit: attention can also be distilled
(note) feature fusion method in neural network (add/connect)
Eat CPU's OpenMP program "suggestions collection"
用 emoji 学安全上网小常识?看 Google 新玩法
Use ECs and OSS to set up personal network disk
[shutter -- basic component] button component - elevatedbutton, textbutton, outlinedbutton, iconbutton
标准传递函数
[shutter -- layout] basic use of container
promise 基础使用
亮点抢先看!2022 开放原子全球开源峰会定于 7 月 25-29 日在北京举办
霸榜MS MARCO!基于Transformer的混合列表感知排序模型
C陷阱与缺陷 第2章 语法“陷阱” 2.1 理解函数声明
院士发声:科研人也要养家,非升即走只能做短平快的研究
为什么多看书不能提高写作水平?