<1>可能遇到的一个问题:显示执行的窗口在程序终止时,突然消失。
如果遇到这种情况,那么可以使程序暂停,直到按下【Enter】键,要做到这一点,请在程序的末尾,恰好在return语句之前,添加下面一行:
getchar();
该行读取一次按键,因此陈谷将暂停直到按下【Enter】键时。
有时,根据程序函数的需要,可能已经有一个等待的指令,这种情况下需要使用getchar()两次:
getchar();
getchar();
<2>要从逻辑上删除一段C代码,更好的办法是使用#if指令,只要像下面这样使用:
#if 0
statements
#endif
在#if和#endif之间的程序段就可以有效地从程序中去除,即使这段代码之间原先存在注释也无妨。
<3>C中名字的选择:
可供使用的字符有小写字母、大写字母、数字和下划线(_),第一个字符必须是字母或者下划线。
<4>常量
int const a;
const int a;
这两条语句都是把a声明为一个整数。
怎样让它在一开始拥有一个值呢?
方法:<1>在声明时对它进行初始化:int const a = 15;
<2>在函数中声明为const的形参在函数被调用时会得到实参的值。
int const *pi;
const int *pi;
是指向整型常量的指针,可以修改指针的值,但不能修改它所指向的值。
int * const pi;
声明pi为一个指向整型的常量指针,此时指针是常量,它的值无法修改,但可以修改它所指向的整型的值。
int const *const pi;
最后在pi这个例子里,无论是指针本身还是它所指向的值都是常量,不允许修改。
<4>break和continue语句
break语句用于永久终止循环;continue语句用于永久终止当前的那次循环。
这两条语句的任何一条如果出现于嵌套的循环内部,它只对最内层的循环起作用。
<5>算术操作符
C提供了所有常用的算术操作符:+ - * / %
除了%操作符,其余几个操作符都是既适用于浮点类型,又适用于整数类型。
%为取模操作符,它接受两个整型操作数,把左操作数除以右操作数,但它返回的值是余数而不是商。
<6>移位操作符
在左移位中,值最左边的几位被丢弃,右边多出来的几个空位则由0补齐。
右移位操作存在一个左移位操作不曾面临的问题:
从左边移入新位时,可以选择两种方案,一种是逻辑移位,左边移入的位用0填充,另一种是算术移位,左边移入的位由原先该值的符号位决定,符号位位1则移入的位均为1,符号位位0则移入的位均为0,这样能够保证原数的正负形式不变。
左移位操作符位<<,右移位操作符为>>。
<7>位操作符
位操作符对它们的各个位执行AND、OR和XOR(异或)等逻辑操作。
位操作符有:
&| ^
它们分别执行AND、OR和XOR操作。它们要求操作数为整数类型,它们对操作数对应的位进行指定的操作,每次对应左右操作数的各一位进行操作。
位的操纵:
(a)把指定的位设置为1
value = value | 1 << bit_number;
(b)把指定的位清0
value = value & ~(1 << bit_number);
(c)对指定的位进行测试
value & 1 << bit_number