狂人c程序员入门必备这本书怎么样知乎

狂人c程序员入门必备这本书怎么样知乎,第1张

这书别看了……讲得忒乱。C语言入门推荐看《C和指针》或者《Linux C编程一站式学习》。实在不行看谭浩强的《C程序设计》也凑合,经典的K&R版《C语言程序设计》是进阶读本。《C陷阱和缺陷》侧重C语言的使用误区,《C专家编程》部分内容跟UNIX *** 作系统相关。

(1)你在源代码中写a和'a'有什么区别?

你的程序实际上是写在txt文件中(.c、.cpp啥的都是无格式文本)

如果你直接在源程序中写a,则编译器把它当成是你程序中的一个变量;

例如你在程序代码中写一句"int abc = 100",abc中的a被编译器理解成一个标识符/名称的组成部分。

如果你在源程序中写'a',则编译器遇到单引号把它理解成一个字符常量,这完全是编译器词法分析过程中的区别。

不管是a还是'a',你写在源程序文件中的内容都可以叫做代码的组成成分(如果不是资源数据)。

(2)'a'并非char类型,事实上它是int类型

这话说得不仅让人难以理解,而且根本就是错的。'A'是char类型常量无疑,注意区分术语integral type(整数类型,包括有符号或无符号的int, short, char)和integer(整型int),看英文书这个区别很明显,比如case子句都要求integral type,不一定是int类型。

(3)啥是ASCII码

0x34、'a'等都是二进制机器码的一种记录方式。程序编译之后,'A'和数值65的二进制码是相同的,所以有时用int类型的数值常量代替char常量能得到同样的结果(很多时候还牵涉到隐式类型转换,初学者先不管),这其实是不太规范的。计算机喜欢用机器码,源码是写给人看的,所以有些程序虽然机器码是正确的,但源码语义不明,也是不好的。

(4)

楼主还是换本书看吧,真心的。入门的话很多问题不必深究,先写程序跑起来,选教材最重要是作者讲述方式与你的理解方式一致。

1. 与其它高级语言比起来,C 语言对硬件亲和性差不多算最高,对硬件的利用率也最高(在会用的前提下)。 C 语言可以很方便地任意 *** 作目前计算机内任何可以用地址来表示的东西——也就是说软件能直接 *** 作到的东西中,只有 CPU 里边的寄存器不能直接 *** 作(嵌到 C 里边的汇编或者编译器特殊处理的不算)。2. 比 C 更能全方位 *** 作硬件的只有汇编,但是汇编对复杂程序设计实在是太不方便了。所以目前 *** 作系统也只有很少的部分用汇编写。3. C 语言本身对于应用程序的开发在时间上并不会造成太大的障碍。很多其它语言的高级特性其实只是库的支持而已,如果有那些 library,C 语言在开发效率上并不会有太大的问题。并且发展了这么多年,其实常用的 library 基本上也都能找到。4. 由于计算机性能的增强,越来越多的功能可以仅通过脚本在宿主环境中完成。这是 C 语言做不到的。5. C 语言也是高级语言中最能体现目前计算机硬件工作方式的语言。综合前三点,如果计算机架构不改,C 语言必定还有很大的生存空间。诚然硬件资源和人力资源(编程时间)上的权衡,随着计算机硬件的发展,越来越偏向人力资源,所以C 语言的分额会萎缩。但是人的欲望膨胀得也不慢(对计算机硬件性能的需求膨胀),在这个条件下 C 语言的需求萎缩并不会太快。上面第四点可能是 C 语言需求萎缩的最大原因,不过第四点在一定程度上也拓展了编程人员的需求量。由于最后一点,如果真的要对其它编程语言有很深入的理解,那必须理解计算机的架构(计算机到底是怎么干活的),那么 C 语言是道迈不过的坎。只要涉及到 *** 作系统就离不开 C 语言了(当然可以说有的 *** 作系统用的 C++,但是如果 C 语言都没搞清楚,C++是不可能搞清楚的)。对于比较上层的开发者来说就算不常用C语言,至少要知道 它是怎么回事,就像写驱动的人可能并不常用汇编,但是一定要知道它是怎么回事,不然怎么解那些莫名其妙的 bug?学了C 语言,最不济的情况下,也是会让你有机会成为使用其它任何语言的高手。

说的非常好,转一下

作者:熊心源

链接:http://www.zhihu.com/question/21992679/answer/19991091

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11263710.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存