十年老IT知识分享 – 基础知识 | 每日一面(21)

读者:对于a[i] = i++; 我们不知道a[] 的哪一个分量会被改写,但i的确会增加1, 对吗?

小林:不一定!如果一个表达式和程序变得未定义, 则它的所有方面都会变成未定义。

读者:++i 和i++ 有什么区别?

小林:如果你的C 语言书没有说明它们的区别, 那么买一本好的。简单而言: ++i在i 存储的值上增加一并向使用它的表达式“返回” 新的, 增加后的值; 而i++ 对i增加一, 但返回原来的是未增加的值。

读者:如果我不使用表达式的值, 我应该用++i 或i++ 来自增一个变量吗?

小林:由于这两种格式区别仅在于生成的值, 所以在仅使用它们的副作用时, 二者完全一样。但是, 在C++ 中, 前缀方式却是首选。

有时候,正是那些意想不到之人,成就了无人能成之事。

——图灵

正文完