读书人

当一个算术表达式中有一个变量的前添或

发布时间: 2014-01-14 23:14:00 作者: rapoo

当一个算术表达式中有一个变量的前加或者后加,用到的这个变量是原值还是加后的值?
例如:
int x=1,y=3,z=2;
System.out.println(y--/++x); // 输出是 1

System.out.println((z++)*3); // 输出是6

我知道前加和后加在给另一变量赋值时的区别,前加是使用加1后的值,后加是使用原值

第一句y--后减语句为什么不是使用的原值3?
第二句z++后加是使用的原值2

能告诉下编译器处理这个问题的原理吗?

[解决办法]
你这输出是java函数吧?
不过我只从C++的编译器来讲,你y--/++x,使用的也是y之前的值,至于为什么为变成1,
这是因为3/2,整数相除不会有小数,小数直接去掉了,
不信你可以这样:


int x=1,y=3,z=2;
printf("%f\n", ((double)y--/++x)); // 输出是1.500000


读书人网 >C++

热点推荐