C语言中的一些反智设计
所谓反智,是指与我们日常习得的知识有冲突的处理方式。C语言这么设计根本的理由是节省代码的容量!
- 递增、递减:i++, ++i, i--, --i
- i = i++ + ++i - --i - i--
- 请问 i=?
- 副作用导致算术运算的结合律不成立!
- Evaluation Order
- 加上:i+=e
- 赋值与相等:v=e vs. a==b
- 赋值语句表达式:(v = e)
- ((v = e)==b)是什么意思?
- 逗号表达式:e1, e2;
- 条件表达式:a>b?a:b
- 还有啥?
- ...
如何写出等价的表达式?
TIPS:
- 避免不同类型的表达式嵌套!
- 禁止有副作用的表达式嵌套使用!
DEGUB
CS50IDE平台、VSCode
- 1,利用printf
- 2,利用平台提供的功能