C程序设计语言之附录A 参考手册

1、引言

本手册描述的C语言是1988年10月31日提交给ANSI的草案。

2、词法规则

首先,翻译单元(translation unit)是什么?http://blog.chinaunix.net/uid-27018250-id-4305502.html大概是至少能通过编译生成一个目标文件吧。

2.1 记号

C语言中的6类记号:标识符、关键字、常量、字符串字面值、运算符和其他分隔符。

2.2 注释

果然标准的注释还是/**/。

2.3 标识符

再次提到了有外部链接的标识符的起名限制:
在这里插入图片描述

2.4 关键字

2.5 常量

书上原话:“字符常量不包括字符’和换行符。”md这个问题好像网上有好多案例,都是遇到了“常量中有换行符”的问题。有查到“单撇号只是界限符,不属于字符常量中旳一部分”这样的说法,那换行符呢?

2.6 字符串子面值

字符串的类型为“字符数组”,存储类为static。

3、语法符号

在这里插入图片描述
上面是对后面内容的书写格式的介绍,说实话,没大看懂,主要是后面用到这种格式的描述看不懂。

4、标识符的含义

对它的解释依赖两个属性:存储类和类型。存储类决定了与该标识符对象相关联的存储区域的生存期,类型决定了标志对象中值的含义。

4.1 存储类

automatic & static

4.2 基本类型

文中提到:“以关键字unsigned声明的无符号整数遵守算数模2^n的规则,其中n是相应整数的二进制位数。对无符号数的算术运算永远不会溢出。”
首先,这里的n好像是整数的类型的字节数对应的二进制位数。当无符号数出现负数时,要把这个负数转换成可以表示的正数,做法就是取它对2的n次方的模。这样得到的结果永远都是在对应的无符号整型的取值的范围内,也就“没有溢出”了。
所以要注意,无符号数之间的相减要不要产生负数,而当一个负数与一个无符号数进行运算时,前者会被提升为unsigned,此时的结果就不一定是所希望的了。

4.3 派生类型

数组 函数 指针 结构 联合

4.4 类型限定符

声明为volatile的对象表明它具有与优化相关的特殊属性。

5、 对象和左值

对象是一个命名的存储区域,左值lvalue是引用某个对象的表达式。

6、转换

6.1 整形提升

如果对原始类型的所有值都可用int类型表示,则其值将被转换为int类型;否则将被转换为unsigned int类型。(一种说法:通常情况下,在对int类型的数值作运算时,CPU的运算速度是最快的。在x86上,32位算术运算的速度比16位算术运算的速度快一倍。)后半句话的意思大概是我不想输出int型,比如用了%u?

6.2 整型转换

6.3 整型和浮点数

6.4 浮点类型

6.5 算数类型转换

特意地到了“对float类型操作数的算术运算可以只用单精度而不是双精度”;所以,float+double时,是怎么转换的呢?

6.6 指针和整数

这一节就麻烦了,mark吧。

6.7 void

可以通过强制类型转换将表达式转换为void类型。例如,在表达式语句中,一个空的强制类型转换将丢掉函数调用的返回值。

int a(void)
{
   
	int x = 10;
	return (void)x;
}

int
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值