關於 i 快於 i

2021-09-13 23:09:14 字數 560 閱讀 8493

當然,很多時候我們有的**用c++提交通過了,但是g++卻失敗了呢?眾所周知,不同的編譯器,會對**做出一些不同的優化。舉乙個最簡單的例子。針對單個語句(注意,是單個語句,不是包含在語句中的那種前++和後++):

a: a++;b: ++a;

一般的講,我們都知道,這兩條語句的最終結果是一樣的,就是a自己增加了1。但是,兩者的差距還是有的。如果從標準c的角度去理解。a++這個語句等同於

a: a = a + 1

也就是說,我是先呼叫,再自增。在呼叫過程中,會申請乙個新的資料位址,用於存放臨時的變數a』,然後在把a』加1,之後在把a』賦值給a。

但是++a這個語句不需要這麼麻煩。因為他是先自增,後呼叫,也就是省去了申請新位址的功夫。所以理論上,二者的時間消耗是有差異的,如果你是使用標準c的編譯方式,就可以發現這個差異。畢竟,申請臨時記憶體這個操作耗費的時間,遠遠比令已知記憶體的資料進行乙個改變要長的多。

但是編譯器的優化就體現在了這種本身結果相同卻耗時有差異的地方。如果你使用gcc來編譯,結果你會發現前++與後++二者基本上沒有差異。這就是編譯器的優化中的冰山一角了。事實上還有很多優化的地方。

**

關於i 與 i 的問題

不要再問 i i啦!好多人面試的喜歡問 i 和 i的區別。尤其是對應屆畢業生面試中尤為常見。更有主考官原意出 x 4 x 4 x x 這種難題,覺得這種題可以綜合考察被面試者的綜合能力。不排除有人,能把這種題答的很完美,但也不排除有的主考官連自己都搞不明白。先不說這題出的對錯,這種問題,在大部分 覺...

關於 i 和 i 的區別

i 和 i 的使用分為兩種情況 1 單獨使用 2 放入表示式中使用。1 第一種情況,單獨使用時從實現的效果 即程式的執行結果 上看是等價的。2 當放入表示式中使用,則有本質區別 b i 字首形式,等價於 i i 1 b i b i 字尾形式,等價於 b i i i 1 i 是先使用後自加,在結束標誌...

關於i 與 i的思考

筆者剛接觸這個的時候,也是糊里糊塗,特意去查詢了許多資料,自以為已經了解,不想仍是只在此山中,雲深不知處。通常的解釋是 i 先運算,再自增 i先自增,再運算。一定程度上,這兩句話是對的。但筆者這裡想說的是,筆者贊同第二句話,卻不認可第一句話。我們來看乙個簡單的例子 int i 0 int b 0 b...