错题本

2021/10/17

C语言错题本

第一题

int m=10;
m+=m-=m*m; 
// 第一次计算错误:表达式的值为-80    10*10 -> 10-100- > (-90)+10       错误原因:把-=当作-处理了,应该赋值
// 第二次看到答案后计算:表达式的值为0   10*10 -> 100-100 -> 0+0         错误原因:复合赋值运算符应先计算在赋值,我是直接赋值了在计算
// 第三次思考后答案:表达式的值为-180    10*10 -> 10-100 -> -90+-90
// 原因:算术复合赋值运算符右边的表达式是自动加括号的,   `“c%=a-3” 不能理解为"c=c%a-3,应理解为"c=c%(a-3)"`

第二题

int i=1,j; float f=2.0; char ch='b';
i=j=2, j=3 ;
// 第一次计算,i的值为2。j=3 -> j=2 -> i=2      错误原因:计算顺序应从左向右
// 第二次计算,j的值为3。  j=2 -> i=j -> j=3
// 原因:依次计算左边、右边表达式

第三题

int a=2, b=2, c,d,e,f,;
t= d=a--, e=d--, f=--e;
// 第一次计算 d = a-1   错误原因:自减时,若时-号在后,先应用在- 
// 第二次计算,t的值为1。   d=a -> a-1 
// 原因:自增自减在后是先运用在--

第四题

二进制转十进制
第一次计算:错误原因,未计算0次方,计算时直接从1次方开始算数

第二次计算:从右开始算起,右边第一位$2^0$

目 录