编号 |
页码和行数 |
更正前 |
更正后 |
注 |
1 |
第325页 正数第6行 |
printf("%d", *(p)++); |
printf("%d", (*p)++); |
|
2 |
第325页 11.2的程序 |
#include <stdio.h> int main() { int a[] = {1,2,3,4,5}; int *p = a; printf("%d,",*(++p)); printf("%d,", *(p)++); printf("%d,",*p); printf("%d,",*p); printf("%d,",*p--); printf("%d,",--(*p)); printf("%d\n",*p); return 0; } |
#include <stdio.h> int main() { int a[] = {1,2,3,4,5}; int *p = a; printf("%d,",*p); printf("%d,",*(++p)); printf("%d,",(*p)++); printf("%d,",*p); printf("%d,",*p--); printf("%d,",--(*p)); printf("%d\n",*p); return 0; } |
原第8行语句调整到第6行语句之前 |
3 |
第343页图12-6 |
(a)多数计算机系统中结构体变量s在内存中的存储形式 (b) 少数计算机系统中结构体变量s在内存中的存储形式 |
(a)结构体变量s的第二个成员为4字节int型时在内存中的存储形式 (b) 结构体变量s的第二个成员为2字节short型时在内存中的存储形式 |
|
4 |
附录C |
|
|
表格第一行“含义”所在列在“引用结构体成员”后面,添加两个运算符:后缀增1、后缀减1 “运算符”所在列的圆点下面,添加: ++(后缀)、--(后缀) 表格第二行的“++、--”修改为“++(前缀)、--(前缀)” |
5 |
第218页 8.6节的表格,倒数第二行表格 |
“为了在函数内改变实参的值,必须采用传值调用的方法” |
“为了在函数内改变实参的值,必须采用传地址调用的方法” |
“向函数传递一维数组和二维数组”一行;“备注”一列
|
6 |
第384页第61行代码 |
sum = sum + stu.score; |
sum = sum + stu[i].score[j]; |
|
7 |
第387页程序第44行 |
fscanf(fp, "% c", &stu[i].studentSex); |
fscanf(fp, " %c", &stu[i].studentSex); |
|
8 |
附录E第406页倒数第4行的表格 |
int isalnum(ich) |
int isalnum(ch) |
|
9 |
附录E第412页正数第1行表格 |
void(或char) *calloc(n,size) unsigned n;unsign size; |
void(或char) *calloc(n,size) unsigned int n; unsigned int size; |
|
10 |
附录E第412页正数第1行表格 |
分配n个数据项的内存连续空间,每项大小为size字节。 |
分配n个数据项的内存连续空间,每项大小为size字节,与malloc()不同的是calloc()能自动将分配的内存初始化为0。 |
|
11 |
第176页程序第16行 |
ret = scanf("%d, &guess); |
ret = scanf("%d", &guess); |
|
12 |
第190页程序第7行 |
"Input the scores of ten students:\n" |
"Input the scores of five students:\n" |
|
13 |
第384页程序第59-63行 |
for (j=0; j<m; j++) { sum = sum + stu.score; } stu.aver = (float)sum/m;
|
for (j=0; j<m; j++) { sum = sum + stu[i].score[j]; } stu[i].aver = (float)sum/m;
|
|
第36页图3-6改成:
图3-6 表达式中的自动类型转换规则
第36页倒数第7行:
例如,一个int型操作数与一个float型操作数进行算术运算,则在对其进行运算之前要先将int型操作数转换成float型(注意,无需经过int型先转换为unsigned,再转换成long型,再转换为float型的过程)。
改成:
例如,一个int型操作数与一个float型操作数进行算术运算,则在对其进行运算之前要先将float型自动转换为double型,并将int型操作数转换成double型(注意,无需经过int型先转换为unsigned int,再转换成long型,再转换成unsigned long,再转换为double型的过程)。
附录C修改如下:
优 先 级 |
运 算 符 |
含 义 |
运 算 类 型 |
结 合 方 向 |
1 |
() [ ] -> . ++ -- |
圆括号、函数参数表 数组元素下标 指向结构体成员 引用结构体成员 后缀增1、后缀减1 |
|
自左向右 |
2 |
! ~ ++ -- - * & (类型标识符) sizeof |
逻辑非 按位取反 前缀增1、前缀减1 求负 间接寻址运算符 取地址运算符 强制类型转换运算符 计算字节数运算符 |
单目运算 |
自右向左 |
3 |
* / % |
乘、除、整数求余 |
双目算术运算 |
自左向右 |
4 |
+ - |
加、减 |
双目算术运算 |
自左向右 |
5 |
<< >> |
左移、右移 |
位运算 |
自左向右 |
6 |
< <= > >= |
小于、小于等于 大于、大于等于 |
关系运算 |
自左向右 |
7 |
== != |
等于、不等于 |
关系运算 |
自左向右 |
8 |
& |
按位与 |
位运算 |
自左向右 |
9 |
^ |
按位异或 |
位运算 |
自左向右 |
10 |
| |
按位或 |
位运算 |
自左向右 |
11 |
&& |
逻辑与 |
逻辑运算 |
自左向右 |
12 |
|| |
逻辑或 |
逻辑运算 |
自左向右 |
13 |
? : |
条件运算符 |
三目运算 |
自右向左 |
14 |
= += -= *= /= %= &= ^= |= <<= >>= |
赋值运算符 复合的赋值运算符 |
双目运算 |
自右向左 |
15 |
, |
逗号运算符 |
顺序求值运算 |
自左向右 |