C 语言学习笔记
printf 函数支持下列各式说明:%o 表示八进制数(Octal 的缩写);%x 表示十六进制数;%c 表示字符;%s 表示字符串;%% 表示百分号本身。
C 语言中一个通用规则实例:在允许使用某种类型变量值的任何场合,都可以使用该类型的更复杂的表达式。
单引号中的字符表示一个整型值,该值等于此字符在机器字符集中对应的数值,称之为字符常量。它不过是小的整型数的另一种写法。例如,A
是一个字符常量;在 ASCII 字符集中其值是 65(即字符 A 的内部表示值为 65)。此时,用 A
要比用 65 好,因为 A
的意义更清楚,且与特定的字符集无关。
在兼有值与赋值两种功能的表达式中,赋值结合次序是由右至左。
习惯其他语言(特别是 Fortran 语言)的程序员可能会对 C 语言的函数参数传递方式感到陌生。在 C 语言中,所有函数参数都是“通过值”传递的。也就是说,传递给被调用函数的参数值存放在临时变量中,而不是存放在原来的变量中。这与其他某些语言是不同的,比如 Fortran 等语言是“通过引用调用”,Pascal 则采用 var 参数的方式,在这些语言中,被调用的函数必须访问原始参数,而不是访问参数本地副本。直白的说,在 C 语言中,被调用函数不能直接修改主调函数中变量的值,只能修改其私有的临时副本的值。
当把数组名用作参数时,传递给函数的值是数组起始元素的位置或地址 —— 它并不复制元素本身。在被调用函数中,可以通过数组下标访问或修改数组元素的值。
定义(define)和声明(declaration)的区别在于,“定义”表示创建变量或分配存储单元,而“声明”指的是说明变量的性质,但并不分配存储单元。
在 C 语言中,下划线“_”被看做是字母,通常用于命名较长的变量名,以提高其可读性。由于库例程的名字通常以下划线开头,因此变量名不要以下划线开头。大写字母与小写字母是有区别的,所以,x 与 X 是两个不同的名字。在传统 C 语言用法中,变量名使用小写字母,符号常量名全部使用大写字母。
short 与 long 两个限定符的引入可以为我们提供满足实际需要的不同长度的整型数。int 通常代表特定机器中整数的自然长度。short 类型通常为 16 位,long 类型通常为 32 位,int 类型可以为 16 位或 32 位。各编译器可以根据硬件特性自主选择合适的类型长度,但要遵循下列限制:short 与 int 类型至少为 16 位,而 long 类型至少为 32 位,并且 short 类型不得长于 int 类型,而 int 类型不得长于 long 类型。
类型限定符 signed 与 unsigned 可用于限定 char 类型或任何整型。unsigned 类型的数总是正值或 0,并遵守算术模 定律,其中 n 是该类型占用的位数。例如,如果 char 对象占用 8 位,那么 unsigned char 类型变量的取值范围为 0~255,而 signed char 类型变量的取值范围则为 -128~127(在采用对二的补码的机器上)。不带限定符的 char 类型对象是否带符号则取决于具体机器,但可打印字符总是正值。有关类型长度定义的符号常量以及其他与机器和编译器有关的属性可以在标准头文件<limit.h>与<float.h>中找到。
取模运算符 % 不能应用于 float 或 double 类型。在有负操作数的情况下,整数除法截取的方向以及取模运算结果的符号取决于具体及其的实现,这和处理上溢和下溢的情况是一样的。
逻辑运算符 && 与 || 有一些较为特殊的属性。由 && 与 || 连接的表达式按从左至右的顺序进行求职,并且,在知道结果值为真或假后立即停止计算。