请大神指教一个小问题
j=3为什么
输出j++*——j*——j等于4 代码不是很清晰
如果是
j++ * --j * --j
上机测试,其结果为1
解释:++和--的优先级和其位置有关,前置的话优先级要高于*,后置则低于*
所以上述语句 先执行两次--j,此时j=1,所以最终结果为1
最后再执行j++,所以最终的j=2
题外话: 编程过程中应该尽量避免这类写法,如果实在需要,请适当添加括号以增加可读性
更重要的是,上述代码不同的编译器可能会得出不同的结果 BngThea 发表于 2017-10-13 16:39
代码不是很清晰
如果是
int j=3;
cout<<j++*— —j*— —j;
输出为4
(我也不想用这个,老师布置的题) 没有标准答案,这种代码一般都会被"优化"过之后执行...出什么情况都不奇怪.. 橙C 发表于 2017-10-13 16:49
没有标准答案,这种代码一般都会被"优化"过之后执行...出什么情况都不奇怪..
这么神奇吗老师不会在坑我吧,让我分析过程 FrankDUO 发表于 2017-10-13 16:50
这么神奇吗老师不会在坑我吧,让我分析过程
按照老师教的做个"标准"答案就可以了...实际应用中,写这种代码的人被认为脑子有坑的..
页:
[1]