c语言 int i=5;求++i*--i?和++i*++i? 要详细解释的!!
3个回答
展开全部
注意,在C语言的表达式中,运算符的优先级、结合性 与 运算符的求值顺序 完全是两码事。
C中只有如下4个运算符规定了求值顺序,分别是:&& || ?: 和 , 。
而其他运算符的求值顺序是未定义的,具体要看不同的编译器是怎么实现的。
举例来说,你这个 ++i*--i 实际上就是 (++i) * (--i) ,而这个 * 的求值顺序未定义,也就是说可以先计算左操作数 (++i),可以先计算右操作数 (--i),也可以两边同时计算,而你这两个表达式又有副作用,所以不同的实现会得到不同的结果。
++ 、 -- 属于单目运算符,按前缀后缀规则计算即可。
C中只有如下4个运算符规定了求值顺序,分别是:&& || ?: 和 , 。
而其他运算符的求值顺序是未定义的,具体要看不同的编译器是怎么实现的。
举例来说,你这个 ++i*--i 实际上就是 (++i) * (--i) ,而这个 * 的求值顺序未定义,也就是说可以先计算左操作数 (++i),可以先计算右操作数 (--i),也可以两边同时计算,而你这两个表达式又有副作用,所以不同的实现会得到不同的结果。
++ 、 -- 属于单目运算符,按前缀后缀规则计算即可。
展开全部
++i*--i = 25.
前置++和--的优先级高于*,所以先计算++i和--i,再计算*。
++i,--i后,i的值不变,5*5=25
++i*++i = 49.
原因和上面的相同,也是优先级的问题,2次++i后,i=7,7*7=49
前置++和--的优先级高于*,所以先计算++i和--i,再计算*。
++i,--i后,i的值不变,5*5=25
++i*++i = 49.
原因和上面的相同,也是优先级的问题,2次++i后,i=7,7*7=49
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个题目没有答案。。。。。。。
不同编辑器的答案不一样
不同编辑器的答案不一样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询