Ⅰ c語言 sum+=i++;和 sum+=i;++i; 那個運算的速度更快
從現代程序員的角度來說你可以認為沒什麼區別,就算是++i和i++也可以認為沒什麼區別
你從理論上可能有無數人無數書會告訴你怎麼樣怎麼樣,但是其實現代編譯器已經可以完全優化這些了,就好像一般看上去好像i++比++i更費時間,實際上也有人研究VC的匯編代碼其實前者的x86指令編譯出來更少
所以總體來說研究這個沒什麼特別的意義,其實從編程的角度來說後者更好,世界上99.9%的情況不需要對這種東西做優化,反而是程序代碼越清晰越好,可讀性往往大於優化。再者說真要做這種程度的優化的話,往往也用匯編寫了
Ⅱ C語言中i++與++i那個速度快
前置的自增運算符(++i)速度快,因為前置的自增後直接返回引用,而後置的先定義一個臨時變數,把值賦給臨時變數,然後自增,返回臨時變數
Ⅲ C語言中,是否int型的變數運算速度最快
不是吧!int,char這些變數字長不一樣。要按字長的長短來區分速度的話那麼字長最小的應該速度最快(同一台電腦來說)。
Ⅳ c語言中運算符運算速度的排名,優先順序別已經知道如圖所示,想知道他們的運算速度的排名,了解的告訴下謝謝
基本上也是按照操作符個數來的
1取址 ,賦值
2位運算
3邏輯非
4加減
5邏輯與或
6 乘除
三目運算符
Ⅳ 在c語言中乘法和除法,比位移運算更快嗎
除法是最慢的,還有像乘法
1000111111 *2會直接優化成1000111111加個0,所以位移更快
Ⅵ C語言裡面的運算符優先順序如何
C語言中,運算符的運算優先順序共分為15 級。1 級最高,15 級最低。 在表達式中,優先順序較高的先於優先順序較低的進行運算。而在一個運算量兩側的運算符 優先順序相同時,則按運算符的結合性所規定的結合方向處理。
各等級運算符如下:
(以下說明中,對傳統的1級和2級做了細化,1和2對應傳統1級,3和4對應傳統2級,所以細化說明共有17級。)
1、基本表達式 1級
基本表達式(Primary expressions),主要是用於運算符之間,做為運算數。
標識,常量,字元串文字量,優先順序提升表達式最優先執行。
優先順序提升表達式是指圓括弧包圍的表達式,如「( expression )」
2、後綴表達式 2級
postfix-expression [ expression ],數組下標運算。
postfix-expression ( argument-expression-list),函數調用,括弧內的參數可選。
postfix-expression . identifier,成員訪問,
postfix-expression -> identifier,成員訪問,->號之前應為指針。
postfix-expression ++,後綴自增
postfix-expression --,後綴自減
( type-name ) { initializer-list }
( type-name ) { initializer-list , } 復合初始化,C99後新增。
3、單目/一元運算 3級
++ unary-expression 前綴自增
-- unary-expression 前綴自減
unary-operator cast-expression 單目轉型表式式, 包括 取地址& ,提領 * , 正號+ ,負號- 位反~ 邏輯否!。
sizeof unary-expression 求類型長度,對表達式求類型長度
sizeof ( type-name ) 求類型長度
4、強制類型表達式 4級
( type-name ) cast-expression,強製表達式成為type-name指定的類型。
5、乘法表達式 5級
「 * 」 乘法運算符;「 / 」除法運算符;「 % 」 取余運算符。
6、加法運算符 6級
「 + 」加法運算符;「 - 」減法運算符。
7、移位運算符 7級
<< 左移運算符;>> 右移運算符。
8、關系運算符 8級
<、<=、>、>=關系運算符。
9、相等運算符 9級
「 == 」等於運算符;「 != 」不等於運算符。
10、位與運算符 10級
「 & 」按位與運算符
11、位異或運算符 11級
「 ∧ 」按位異或運算符(Bitwise exclusive OR operator)。
12、位或運算符 12 級
「 | 」按位或運算符(Bitwise inclusive OR operator)。
13、邏輯與運算符 13級
「&&」邏輯與運算符。
14、邏輯或運算符 14 級
「 || 」邏輯或運算符。
15、三元條件運算符 15級
? :條件運算符。
16、賦值運算符 16 級
=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=賦值運算符。
17、逗號運算符 17級
「,」逗號運算符。
具體可參見下圖:
Ⅶ C語言中 加法運算和邏輯運算 哪個效率高
不明白樓上的啥意思。呵呵
加法的效率肯定是最快的。原因是處理器內部加邏輯單元,所以加法速度最快。
邏輯運算符,實質上也是進入到加邏輯單元進行運算,但是運算之前要把邏輯運算符轉換為加運算符。所以效率低點。但是也很快。
在計算機中,一切運算都是通過轉換到加運算符執行操作的。
Ⅷ c語言中的運算符優先順序高低是什麼意思
運算符用於執行程序代碼運算,會針對一個以上操作數項目來進行運算。例如:2+3,其操作數是2和3,而運算符則是「+」。
運算符的優先順序是從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。表達式的結合次序取決於表達式中各種運算符的優先順序。優先順序高的運算符先結合,優先順序低的運算符後結合,同一行中的運算符的優先順序相同。
(8)c語言運算符速度快慢擴展閱讀
優先順序與求值順序無關。如a+b && b*c,雖然*優先順序最高,但這個表達式求值順序是從左到右。
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。
相同優先順序中,按結合性進行結合。大多數運算符結合性是從左到右,只有三個優先順序是從右至左結合的,它們是單目運算符、條件運算符、賦值運算符。
指針最優,單目運算優於雙目運算。如正負號。先算術運算,後移位運算,最後位運算。請特別注意:1 << 3 + 2 & 7等價於 (1 << (3 + 2))&7。邏輯運算最後結合。
Ⅸ C語言大神,小弟請教 a<<2*5與a*20哪個運算速度更快 想這個運算速度的比較,怎樣測試計算的時間
比如說8位的單片機,如果處理8位的變數a,並且支持左移指令和乘法指令。那麼a<<2*5的匯編代碼就是先左移兩次再做一次乘法,而a*20就是直接的做一次乘法。結果就是a*20快。但要是單片機不支持乘法指令,那麼把乘法轉換為加法,這時就是a<<2*5的速度快了。
如果乘數是2的冪次方,比如2、4、8、16、32等等,那可以轉換為左移1、2、3、4、5次這樣運算速度最快,這對於不支持乘法指令的處理器是非常重要的——如果按照一般的演算法,乘法變成加法,a×20就變成重復20次加a的動作,這樣很浪費時間。但以轉變為(a<<4)+(a<<2),這樣只需要3次移位和一次加法就算出結果,比乘法表達式速度快的多。
Ⅹ C語言里乘法比加法慢多少,浮點數運算比整數運算慢多少
這個和C語言關系不大
因為是CPU執行的
所以實際上 要看硬體指令集。
一般來說 int型加法需要做一次操作即可。
而乘法大約是加法的5倍左右,具體看內核指令實現
最快可能到2倍 最慢可能到40倍。
浮點數運算,主要看是否有專門的硬浮點計算單元。 如果有,那麼和加法差不多,稍慢一些
如果沒有 那就慢很多了。