GCC与CPU类算术运算实验:K&R习题1-13中条件表达式等价替换的有效性问询
GCC与CPU类算术运算实验:K&R习题1-13中条件表达式等价替换的有效性问询
环境:GCC 9.4.0 on Ubuntu 20.04.1
最近重读K&R第二版的时候,碰到了习题1-13——要求打印输入内容里单词长度的直方图。
我突然回忆起,if表达式里的这段判断:
if (nc < MAXWORD)
好像有人说可以替换成:
if (MAXWORD - nc)
我试着推导了下:
nc < MAXWORD
nc - nc < MAXWORD - nc
0 < MAXWORD - nc
但这里我有点懵了——在C语言里,条件判断只要是非零值就会被当作真对吧?那如果nc > MAXWORD的话,MAXWORD - nc就是负数,结果也是非零,那这个if条件就会成立,这和原判断nc < MAXWORD的逻辑完全相反了啊?是不是我哪里推导错了?还是说这种替换有什么前提条件?
备注:内容来源于stack exchange,提问作者Baldur
相关产品推荐
相关产品推荐

