关于运算符
int x=4,y=24,z=2;z=(--y/++x)*z--;
执行后z的值是多少? 本帖最后由 isdkz 于 2022-3-24 12:16 编辑
自增自减在前就是先自增自减再使用,自增自减在后就是先使用再自增自减,
所以 z = (--y/++x)*z-- 即 z = (y - 1) / (x + 1) * z = 23 / 5 * 2 = 8
23 / 5 为 4,因为 int 类型除以 int 类型还是 int isdkz 发表于 2022-3-24 12:15
自增自减在前就是先自增自减再使用,自增自减在后就是先使用再自增自减,
所以 z = (--y/++x)*z-- 即 z ...
书上写的7那应该是书上答案写错了 tyf1218405122 发表于 2022-3-24 12:49
书上写的7那应该是书上答案写错了
可能吧,我还运行了一遍来着,运行结果就是 8 呀 跑遍程序看看就行 {:10_279:} 本帖最后由 jhq999 于 2022-3-24 18:56 编辑
编译器不一样,结果不一样,这种问题只能说明,涉及自增自减的能分解,尽量分解,不然容易出BUG
z=(--y/++x)*z--;
想让结果等于8
--y;
++x;
z=y/x*z;
想要结果等于7
--y;
++x;
z=y/x*z;
z--;
jhq999 发表于 2022-3-24 18:53
编译器不一样,结果不一样,这种问题只能说明,涉及自增自减的能分解,尽量分解,不然容易出BUG
z=(--y/++ ...
不同编译器对最后这个z--处理一样吗?
是有的不处理z--;
有的处理是吗? tyf1218405122 发表于 2022-3-24 19:48
不同编译器对最后这个z--处理一样吗?
是有的不处理z--;
有的处理是吗?
是 看下小甲鱼的表格算呗 就应该是8,因为运行完(--y/++x)*z--后下一条应该是运行Z-1,再然后才是把8赋值给上一步后的z
页:
[1]