PTA上错了道选择题:
首先0前缀代表八进制,所以y=10 D(十进制),那么问题来了,答案不选C选什么?
我去查了下关于自增运算符的优先级问题(优先级不同于优先),++/–的优先级大于 *
所以按理说应该x先++再 * y(如果你这么想了请允许我偷偷笑下),正常人都会这么想
但其实计算机里自增是有优先与否的问题的,即x++不同于++x
在这里抄一段大佬的原稿:
我开始寻找答案。在C++ Primer里面有提到++使用说明,按我的理解翻译过来即:后置形式的自增自减(形如x++, x–),先保存操作数原来的数值,然后对操作数进行自增自减操作,然后返回之前保存的操作数的值即未进行自增自减操作的值。或者通俗来说即:先使用x的值进行运算,最后再自+1(还是++x这样好用,直接先自+1再做其他运算呗)。
作者:ds1231h
来源:CSDN
原文:https://blog.csdn.net/ds1231h/article/details/50104365
版权声明:本文为博主原创文章,转载请附上博文链接!
。
。
。
所以x++其实就是先进行x的运算,然后再把x的值+1;++x就是把x先+1,再进行运算
不难理解但很容易搞混,归为重要知识点
(所以那道题选B,输出为10,同时x变量的值已经变为2了)