惯用法
判定变量是否落在某个数值范围内(p48)
if (0 <= i && i < n) { /* ... */ }
/* 相反的情况(i在范围之外) */
if (i < 0 || i >= n) { /* ... */ }
用 while 语句建立无限循环(p63)
while (1) { /* ... */ }
for 语句的惯用法(p66)
/* 从0向上加到n-1 */
for (i = 0; i < n; ++i) { /* ... */ }
/* 从1向上加到n */
for (i = 1; i <= n; ++i) { /* ... */ }
/* 从n-1向下减到0 */
for (i = n-1; i >= 0; --i) { /* ... */ }
/* 从n向下减到1 */
for (i = n; i > 0; --i) { /* ... */ }
用 for 语句建立无限循环(p67)
for (;;) { /* ... */ }
读入并忽略掉所有当前输入行中的其余字符(p87)
while (getchar() != '\n'); /* skips rest of line */
跳过无限数量的空格字符(p87)
while ((ch = getchar()) == ' '); /* skips blanks */
数组和 for 循环(p99)
int a[N];
for (i = 0; i < N; i++)
a[i] = 0; /* clear a */
for (i = 0; i < N; i++)
scanf("%d", &a[i]); /* reads data into a */
for (i = 0; i < N; i++)
sum += a[i]; /* sums the elements of a */
数组名作为指针(p160)
for (p = a; p < a + N; p++)
sum += *p;
定义字符串变量
#define STR_LEN 80
char str[STR_LEN + 1];
令s指向字符串尾部
while (*s) s++; /* s最终指向了空字符 */
while (*s++); /* s最终指向了空字符后一个字符 */
字符串拷贝
while ((*p++ = *s2++) != '\0');
设置位
i |= 1 << j; /* set bit j */
将位清0
i &= ~(1 << j); /* clear bit j */
测试位
if (i & 1 << j) ... /* test bit j */
scanf
while (scanf("%d", &i) == 1) {
/* ... */
}
getc
while ((ch = getc(fp)) != eof) {
/* ... */
}