有些任务其他语言也可以实现,但C能够更有效地实现。有些任务无法用其他语言实现,如直接访问硬件,但C却可以。指针虽然很强大,但与之相伴的风险也不小。
一、注释
/*
** 标准输入
** 标准输出
**
**
**
*/
注释以符号/*开始,以符号*/结束。第一/*符号和第一个*/符号之间的内容都被看做是注释,不管里面还有多少个/*符号。
在有些语言中,注释有时用于把一段代码“注释掉”,也就是使这段代码在程序中不起作用,但并不将其真正从源文件中删除。在C语言中,这可不是个好主意,如果你试图在一段代码的首尾分别加上/*和*/符号来“注释掉”这段代码,你不一定能如愿。如果这段代码内部原先就有注释存在,这样做就会出问题。要从逻辑上删除一段C代码,更好的办法是使用#if指令。要像下面这样使用:
#if 0
statements
#endif
在#if和#endif之间的程序段就可以有效地从程序中去除,即使这段代码之间原先存在注释。预处理指令的作用远比你想象的强大。
练习代码:
#include <stdio.h>
int main()
{
int num=5;
int input[5]={1,2,3,4,5};
for(int n=0; n<num; n++)
{
printf("%d",input[n]);
printf("\n");
}
printf("结束\n");
return 0;
}
第一章总结:代码注释要选择#if指令。
二、数据
2.1 基本数据类型
C语言中,仅有4种基本数据类型——整型、浮点型、指针和聚合类型(如数字和结构等)。所有其他的类型都是从这4种基本类型的某种组合派生而来。
2.1.1 整型家族
整型家族包括字符、短整型、整型和长整型,它们分为有符号和无符号两种版本。
听上去“长整型”所能表示的值应该比“短整型”所能表示的值要大,但这个假设并不一定正确。规定整型值相互之间的大小的规则很简单:
长整型至少应该和整型一样长,而整型至少应该和短整型一样长。
char 最小范围:0到127
signed char 最小范围:-127到127
unsigned char 最小范围:0到255
(signed 和 unsigned 的范围一样,只是一个是负到正,一个是0到正)
缺省的char要么是signed char,要么是unsigned char,这取决于编译器。这个事实意味着不同机器上的char可能拥有不同范围的值。所以,只有当程序所使用的char型变量的值位于signed char 和 unsigned char的交集中,这个程序才是可移植的。例如,ASCII字符集中的字符都是位于这个范围之内的。
在一个把字符当做小整型值得程序中,如果显示地把这类变量声明为signed或者unsigned,可以提高这类程序的可移植性。这类做法可以确保不同的机器中在字符是否为有符号值方面保持一致。另一方面,有些机器在处理signed char时得心应手,如果硬把它改为unsigned char,