`
deng131
  • 浏览: 675296 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

运算符优先级 i++ 与 i--

阅读更多
也是在以前面试中也到过的一个题目:

var a = 1, b = 2, c = a+++b;


请问以下输出什么?

alert(c) ? 
alert(a) ?
alert(b) ?

答案是:3,2 ,2

那么为什么是这样答案呐?

其实主要是考察 ++,-- 运算符的操作。

a++ 与 ++a的区别?前者是先执行运算执行完后再在a上加1,而后者是先给a加1后在执行运算。
所以就是为什么c的结果是3,而a结果是2的原因了。如果换成是i--那么结果读者也很好计算出来了?


参考:
http://www.qianduan.net/operator-priority-i-u003d-1-iii-u003d-3-ii-mean-what-and-why.html

1
1
分享到:
评论
2 楼 deng131 2010-09-28  
平时大多数是在根据业务需求开发,很少关注这些细节,至少会很少使用些不常用方法,别人看起来也容易明白,让我想起了在豆瓣上别人说的那样,代码是写给人看的,计算机只是顺便执行下。
1 楼 mbn 2010-09-28  
c = a+++b; 
很反感面试者拿这种自以为很高明的代码来折磨被面试者,如果只是单纯的考++i, i++, --i,i--之类的估计稍懂一点程序的人都能清楚的知道,但是这帮面试的家伙们自以为"c = a+++b;" 增色不少。 任何一门语言在编码中都有介于正确和错误中间的灰色地带,所以才会有编码规范。像这样的语句,就应该像错误那样对待它,没有什么好商量的, 在实际开发中如果有人写这样的代码,那么在review的时候应该不会通过。

相关推荐

    C++运算符优先级表

    C++运算符优先级表 C++ 运算符优先级表是一份非常重要的参考资源,对于C++开发者来说是必不可少的。本文将详细介绍C++运算符优先级表,并对每个运算符进行解释。 一、括号运算符 括号运算符的优先级最高,包括...

    C#运算符优先级解释

    在深入探讨C#运算符的优先级之前,我们先来明确一下什么是运算符以及优先级在编程中的作用。...因此,在学习和应用运算符优先级时,始终保持对代码质量和用户体验的关注,将使你成为一个更加优秀的程序员。

    C++ 运算符优先级列表

    i++)` 循环中每次迭代后自增。 - 示例: `for(i = 10; i > 0; --i)` 循环中每次迭代后自减。 - **左至右关联性**: 表示同等级内运算符从左向右依次执行。 2. **Unary Operators (单目运算符)** - **!** (逻辑非...

    ++i,i++,--i,i--终结

    ### 关于“++i, i++, --i, i--”的理解与应用 #### 一、基本概念 在C/C++编程语言中,“++i, i++, --i, i--”是一组非常重要的自增自减运算符。这些运算符主要用于在程序中修改变量的值。了解这些运算符的工作原理...

    C++ 运算符优先级列表 pdf

    i++) // 循环中使用后置递增。 ``` - **后置递减** `--` - **功能**:先返回原值,然后自减。 - **示例**: ```cpp for (i = 10; i > 0; i--) // 循环中使用后置递减。 ``` - **结合性**:从左到右。 ####...

    C语言运算符优先级.docx

    - 示例:`++i` 或 `i++` - 结合方向:从右到左。 - **-- 自减运算符**: 将变量的值减少1。 - 示例:`--j` 或 `j--` - 结合方向:从右到左。 - **\* 取值运算符**: 获取指针所指向的值。 - 示例:`*ptr` - 结合...

    C语言运算符优先级和结合性表

    - 示例:`i++` 表示先使用 `i` 的当前值,然后将其值增加 1。 5. **负号运算符**:`-` - 含义:表示取数值的相反数。 - 对象个数:1 - 结合方向:自右至左 - 示例:`-x` 表示 `x` 的相反数。 6. **类型转换...

    灵活应用C语言中的 /--运算符.pdf

    在这里必须要把握住这样的一条原则:++/--运算符前置时优先级最大,在其它运算符运算前运算,其次才是其它的四则运算符,++/--运算符后置时的优先级最小,要在所有其它的运算符执行完毕后再来使用它。例如,int i = ...

    关于前++(--)和后++(--)运算的理解

    相反,当这些运算符作为后缀出现在变量之后时,即i++ 或 i--,它们被称为后缀递增或递减运算符。在这种情况下,变量的原始值首先被返回用于表达式的计算,然后变量的值才被增加或减少1。 ### 示例代码的解析 考虑...

    c++ 运算符优先级 运算符优先级 备赛

    i++) cout << i;` 在每次循环结束后,变量`i`的值增加1。 - **重载性**: 可重载。 - **后自减运算符**: `--` - **例子**: `for (int i = 10; i > 0; i--) cout << i;` 每次循环结束后,变量`i`的值减少1。 - **...

    运算符优先级与结合性

    运算符优先级决定了表达式中不同运算的计算顺序,而结合性则规定了具有相同优先级的运算符如何组合。 首先,让我们按照优先级从高到低逐个解析这些运算符: 1. **数组下标、成员选择、函数调用** (优先级1): `[]`...

    Python运算符优先级和结合性一览表.docx

    Python 运算符优先级和结合性一览表 Python 是一种流行的编程语言,具有简洁、易读和高效的特点。Python 的运算符优先级和结合性是理解 Python 编程的关键概念。本文将详细介绍 Python 运算符的优先级和结合性,...

    附录3——运算符优先级表1

    运算符优先级决定了哪些运算会先被执行,而结合性则规定了相同优先级的运算符如何组合。以下是对附录3——运算符优先级表1的详细解释: 1. **运算符优先级**: - 最高优先级的运算符包括括号()`()`, 一元运算符如`...

    标准C基础 运算符优先级

    运算符优先级的高低决定了哪些运算先发生,哪些后发生,这对于理解和编写复杂的表达式至关重要。以下是C语言中运算符的优先级和结合方向的详细解释: 1. **后置++和后置--运算符**: 后置自增和自减运算符(例如 `...

    C语言运算符优先级.pdf

    - 预增/预减运算符与函数参数:`f(++i)`和`f(i++)`在函数调用前后的结果不同,因为预增/预减运算符会立即改变变量的值。 - 乘法和除法与加法和减法:`5 + 2 * 3`会被解析为`5 + (2 * 3)`,而不是`(5 + 2) * 3`,因为...

    C语言运算符优先级PPT课件.pptx

    当运算符优先级相同,遵循从左到右的结合性。例如,`a = b + c * d`会先执行`c * d`,然后是`b + (c * d)`。通过括号可以改变这种默认的计算顺序,如`a = (b + c) * d`会先执行括号内的加法,再做乘法。 算术表达式...

    复数计算器(表达式求值,C#堆栈,运算符优先级)

    C#中的运算符优先级规则与大多数编程语言相似,可以通过使用括号来改变默认的优先级。在这个项目中,可能使用了递归下降解析或者栈来实现表达式求值。递归下降解析是一种自顶向下的方法,逐个分析输入符号,而堆栈则...

    C、C++编程语言运算符优先级

    理解运算符优先级对于编写正确的代码非常重要,因为不同的运算符组合可能会产生不同的结果。 在C和C++中,运算符被分为几个不同的优先级组,这些组按照优先级从高到低的顺序排列。在每个优先级组内,根据结合性来...

Global site tag (gtag.js) - Google Analytics