《你必须知道的495个C语言问题》笔记
3.1 这样的代码为什么不行?a[i]==i++。
i++会改变i的值,i在同一表达式的其他地方被引用,无法判断该引用是新值还是旧值。
3.8 为什么表达式printf("%d %d",f1(),f2());先调用了f2?
逗号分隔得函数参数不是逗号操作符,函数调用的参数的求值顺序是不确定的。
3.13 ++i和i++的区别?
简单说:++i在i存储的值上增加1并向使用它的表达式“返回”新的、增加后的值;而i++对i增加1,但返回的是原来的、未增加的值。
3.18 需要根据条件把一个复杂的表达式赋给两个变量中的一个。是否可以用:
((condition)?a:b)=complicated_expression;
不可,?:操作符可以生成一个值,但是不能被赋值,即它不能生成一个左值。