关于c++的自增运算符计算……
a=3,b=3,c=5;那么a++*a+b+c*a*++b/4等于多少?后面的++b影响前面的b吗?为什么?我就是纠结到底是27还是28才来问的…这边一个告诉我27一个告...
a=3,b=3, c=5;
那么
a++*a+b+c*a*++b/4
等于多少?
后面的++b影响前面的b吗?为什么?
我就是纠结到底是27还是28才来问的…这边一个告诉我27一个告诉我28所以是要怎样…我要崩溃了…… 展开
那么
a++*a+b+c*a*++b/4
等于多少?
后面的++b影响前面的b吗?为什么?
我就是纠结到底是27还是28才来问的…这边一个告诉我27一个告诉我28所以是要怎样…我要崩溃了…… 展开
展开全部
表达式首先被从左向右压入栈,因此出栈顺序从右向左,计算是也是从右向左计算。
对于c*a*++b/4,(++b) == 4,因此其值为15
对于b+c*a*++b/4,此时b的值为4,与15相加为19
对a++*a+b+c*a*++b/4,(a++) == 3,a++*a == (3)*(3) == 9,与19相加为28
最终结果为28,不同编译器结果可能会有差异,这是因为实现运算表达式的存储的方式可能不同
通常的编译器例如vs(如果你使用C++写,别的编译器就不知道了,你可以看看数据结构的书),表达式应该是从左向右压栈,出栈顺序从右向左,因此先执行++b,在执行b。
我在vs2010下跑了一遍,打印结果是28,你可以在你的编译器上试一下嘛
对于c*a*++b/4,(++b) == 4,因此其值为15
对于b+c*a*++b/4,此时b的值为4,与15相加为19
对a++*a+b+c*a*++b/4,(a++) == 3,a++*a == (3)*(3) == 9,与19相加为28
最终结果为28,不同编译器结果可能会有差异,这是因为实现运算表达式的存储的方式可能不同
通常的编译器例如vs(如果你使用C++写,别的编译器就不知道了,你可以看看数据结构的书),表达式应该是从左向右压栈,出栈顺序从右向左,因此先执行++b,在执行b。
我在vs2010下跑了一遍,打印结果是28,你可以在你的编译器上试一下嘛
TableDI
2024-07-18 广告
2024-07-18 广告
仅需3步!不写公式自动完成Excel vlookup表格匹配!Excel在线免,vlookup工具,点击16步自动完成表格匹配,无需手写公式,免费使用!...
点击进入详情页
本回答由TableDI提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询