|
转自http://hi.baidu.com/shiqicai/blog/item/a90ef8818fa1b4dcbd3e1e05.html 作者shiqicai
—写给不知道c/c++序列点的人 把c++里有深度的题出成选择题,或者出成一道错题又或者能展现出题者的bt程度。且看看这道题: 已知a=8,b=7,c=5,d=11 我当时想逗号表达式的值为最后一个表达式的值,那么应该执行--a(此时a=7)和b〉a--(只是判断b>a,a的值暂时不变)后,返回a--(a暂时还是7)的值。那么逗号表达式的返回值应该是7。最后做两次遗留的--运算,a变成5.但是选项里没有7这一项。不禁想起了这个很经典的例子: 那么迅雷的这道题确实就是错题了么?最早引起我怀疑的是《c常见问题集》里面提到c是有序列点概念的。“序列点是一个时间点(在整个表达式全部计算完毕之后或在 ||、 &&、 ? : 或逗号运算符处, 或在函数调用之前), 此刻尘埃落定, 所有的副作用都已确保结束。” 所以说出这道题的人还是很强大的。 |
一道迅雷笔试题引发的..写给不知道c/c++序列点的人(转)
最新推荐文章于 2022-02-25 19:38:17 发布
本文探讨了C/C++中的序列点概念,并通过具体实例解释了逗号运算符和逻辑运算符如何影响表达式的求值顺序及结果。揭示了看似简单的表达式背后隐藏的复杂性和不确定性。
814

被折叠的 条评论
为什么被折叠?



