1. 程式人生 > >C語言自增++/減--運算子的優先問題+例題

C語言自增++/減--運算子的優先問題+例題

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了)