C专家编程 第一章

第一章 C:穿越时空的迷雾

  1. C语言的史前阶段

    UNIX比C语言出现的早。

    BCPL-->B-->New B-->早期的C

    UNIX(PDP-7汇编)-->UNIX(PDP-11汇编)-->UNIX(C语言)

    PDP-7-->PDP-11、IBM 360 、Honeywell 635

  2. C语言的早期体验

    根据编译器设计者的思路发展的特性:

    • 数组下标从0而不是1开始
    • C的基本数据类型直接与底层硬件相对应
    • auto关键字是摆设
    • 表达式中的数组名可以看作是指针
    • float被自动扩展为double ANSI C不再如此
    • 不允许嵌套函数(函数内部包含另一个函数的定义)
    • register关键字
  3. 标准I/O库和C预处理器

    C预处理器的主要功能:

    • 字符串替换
    • 头文件包含
    • 通用代码模板的扩展

    宏最好只用于命名变量;宏名应该大写;千万不要使用C预处理器来修改语言的基础结构

  4. K&R C

    1972-3 -->1976-9 -->1983-9--->

    早期的C-->K&R C -->ANSI C --->

    1967 --->1985-9 ----->

    Simula 67---->C++---->

  5. 今日之ANSI C

    K&R C-->ANSI C

  6. 它很棒,但它符合标准吗?

    不可移植代码

    • 由编译器定义的
    • 未确定的

    坏代码

    • 未定义的
    • 约束条件

    可移植的代码

    • 只使用已确定的特性
    • 不突破任何由编译器实现的限制
    • 不产生任何依赖由编译器定义的或未确定的或未定义的特性的输出
    • 遵循标准的
  7. 编译限制

    每个ANSI C必须支持:

    • 函数形参上限至少31
    • 函数实参上限至少31
    • 一条源代码至少509个字符
    • 表达式至少32层嵌套的括号
    • long int最大值不小于2147483647(不低于32位)
  8. ANSI C标准的结构

    四个部分:

    • 介绍:对术语进行介绍和定义
    • 环境:程序启动时发生什么,程序终止时发生什么,以及一些信号和浮点数运算。
    • C语言
    • C运行库
  9. 阅读ANSI C标准,寻找乐趣和裨益
char **和const char **不相容,相信为什么(指针指向的内容是不一样的)

const不能把变量变成常量,只表示这个符号不能被赋值。
  1. “安静的改变”究竟有多安静
算术转换

-   char/short-->int float-->double

-   一个操作数为double,另一个操作数也被转换为double,结果也为double

-   一个操作数为long,另一个也被转换为long,结果也是long

-   unsigned类似

字符和整型

-   char、short int和int可以使用在int或unsigned int的表达式中。

-   如果int为32位,源类型的值就转换为int,否则转换为unsigned int

寻常算术转换

-   整型升级

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

尽量不要在代码中使用无符号类型,只有在位段和二进制掩码时,才可以使用无符号数

  1. 由编译器定义的Pragmas效果
受到gcc抵制,若用gcc编译会运行计算机游戏。

原文地址:https://www.cnblogs.com/luoxiao23/p/11193060.html

时间: 2024-10-15 16:55:14

C专家编程 第一章的相关文章

Windows核心编程第一章.错误处理

Windows核心编程第一章,错误处理. 一丶错误处理 1.核心编程学习总结 不管是做逆向,开始做开发.在Windows下.你都需要看一下核心编程这本书.这本书确实写得很好.所以自己在学习这本书的同时,也把自己所学的知识进行 总结,以及巩固. 2.常见的Windows函数返回类型总结 数据类型 作用 VOID 如果是Void表示函数不可能失败.极少数windows函数会返回void BOOL 表示这个函数会有失败情况.0失败.否则就是非0.但是一般都会使用TRUE FALSE来判断. HANDL

《程序员修炼之道---从小工到专家》第一章读后感

<程序员修炼之道---从小工到专家>一书由美国Andrew Hunt和David Thomas所著,主要讲述了一位程序员应当如何从个人责任,职业发展,到基本工具,实际的编程项目中发展自己.本书第一章的标题为:注重实效的哲学. 第一章整体主要从程序员个人对待团队,同事,领导,以及自己的前途发展,学习时应当持有的态度出发入手,讲述了程序员在公司中应有的职业操守和准则.作者在开篇时向我们讲述了应当如何成为一位高效的程序员,而后则是分别从各各的方面论述这一观点.首先 第一点是:要对事负责.在工作中如果

读高性能JavaScript编程 第一章

草草的看完第一章,虽然看的是译文也是感觉涨姿势了, 我来总结一下: 由于 大多数浏览器都是 single process 处理 ui updatas and js execute 于是产生问题: js (script tag) will blocking page processing 上图说话: 于是大家动脑筋想办法 想到了三个办法 1. Parallel downloads, then execute  并行下载,然后执行. 2.Download times less,Less downlo

Go Web 编程 第一章 Web相关概念

第一章 Go与Web应用 Go学习群:415660935 1.1 Web应用 在计算机的世界里,应用(application)是一个与用户进行交互,并完成用户特定任务的软件程序.而Web应用则是部署在Web之上,并通过Web来使用的软件程序.一程序满足以下两个条件,我们可以把它看做是一个Web应用: 1.这个程序必须向发送命令请求的客户端返回HTML,而客户端则会向用户展示渲染后的HTML. 2.这个程序在向客户端传输数据时必须使用HTTP协议. 在这个定义的基础上,如果一个程序不是向用户渲染并

程序员修炼之道-从小工到专家(第一章)读后感

第一章 第一节 我的源码让猫吃了 读后感 这一节教会我要有责任心要负责.一.如果承诺了某件事,就要信守承诺完成它,尽管事情可能不尽人意使你不能完成它,但你起码是尽你所能去做了,而不是因为不可能完成了就提前放弃.就像打联盟一样,开局说好了要c别人,如果因为被对面打爆了几波就嚷嚷着要15(投降),而不是努力去扳回局面,这种人是要被喷死的.正确的做法是尽管游戏还是可能会输,你还是要努力的进行游戏,而不是放弃,答应了承诺了就要尽自己的努力去完成尽管结果不尽人意.二.你必须分析事情的风险,如果风险超出你的

自学:Unix环境高级编程 第一章 Unix基础知识

1.2 Unix体系结构 内核(kernel):控制计算机硬件资源,提供程序运行环境. 系统调用(system call):内核的接口. 公用函数库构建在系统调用接口之上. 应用程序既可使用公用函数库,也可使用系统调用 shell是一个特殊的应用程序,为运行其他应用程序提供了一个接口. 1.3 登录    1.登录名 系统在其口令文件(通常是/etc/passwd文件)中查看登录名. 例如:sar:x:205:105:Stephen Rago:/home/sar:/bin/ksh 口令文件中的登

【转】《WCF服务编程 第一章 WCF基础》第一回

原文地址:http://www.cnblogs.com/PirateCaptain/articles/1960954.html 什么是WCF?WCF全名Windows Communication Foundation,中文叫Windows通信基础,MS的名字起的多么的朴实合适,是Windows平台下开发和部署服务的软件开发包.WCF为服务提供了运行时环境(多次看到运行时,这玩意究竟干了什么这么重要呢?),使得开发者能够以CLR类型的方式使用服务(CLR类型是什么呢?能干吗?这个问题得去.NET框

开启Golang编程第一章

Go is an open source programming language that makes it easy to build simple,reliable, and effcient software. Try Go package main import "fmt" func main() { fmt.Println("Hello, 世界") } https://tour.golang.org/welcome/1 体会:和C/C++.C#.java

Python计算机视觉编程-第一章 图像处理基础

图像处理基础 测试1:PIL:Python图像处理类库 PIL(Python Imaging Library,图像处理库)提供了通用的图像处理功能,以及大量有用的基本图像操作.PIL库已经集成在Anaconda库中,推荐使用Anaconda,简单方便,常用库都已经集成.也可以安装python(x,y),但是我一直安装失败,所以就没有装,没有安装也可以自己导入,比如我就是用的pycharm自己导入. 如果安装失败,可以添加一些镜像网站,在进行下载 代码不报错之后,运行代码: 测试代码: # -*-