看了那麼多文章,感覺到大家學習遊戲程式設計的熱情.經常看到很多人提出關於opengl directx,和computer graphics的問題. 但是我個人人為, 遊戲程式設計,最最最重要的還是c c++語言的基本功. 如何編寫高效率,整潔,和盡可能少的bug的**,是成為乙個遊戲程式設計員的關鍵. 所以我開拉這個小系列,來幫c或c++語言基礎不牢靠的人補補基礎知識,希望能夠對大家有所幫助.
至於內容嘛,我想起來什麼就寫什麼,不一定有什麼邏輯關係.畢竟我工作也很忙,只有在每個milestone完了以後才有時間幹點別的. 所以這裡先道歉啦.
今天就講講最基本的迴圈.
int i;
for(i = 0; i < 100; i++)
也許很多人覺得這個**是最簡潔的了.其實不然, 還有更快速的寫法.
i = 100;
dowhile(--j);
以下是visual studio .net 2003編譯過的彙編**.
***************=while loop***************=
j = 10;
00411a32 mov dword ptr [j],0ah
dowhile(--j);
00411a39 mov eax,dword ptr [j]
00411a3c sub eax,1
00411a3f mov dword ptr [j],eax
00411a42 jne main+29h (411a39h)
***************=for loop***************=
for(i = 0; i < 10; i++)
00413656 mov dword ptr
,0 0041365d jmp main+58h (413668h)
0041365f mov eax,dword ptr
00413662 add eax,1
00413665 mov dword ptr ,eax
00413668 cmp dword ptr ,0ah
0041366c jge main+60h (413670h)
0041366e jmp main+4fh (41365fh)
仔細分析就會發現while迴圈比for迴圈在每次的迴圈中都少一條彙編語句. 主要是因為while迴圈是從大到小的順序迴圈,不需要和10進行比較就可以跳轉.而且可以直接利用--j語句設定的符號標誌進行條件判斷.
同樣是迴圈10次,但是少一條語句還很多關鍵的時候很有用哦.
以上是第一章,如果有不同意見,錯誤或者遺漏,請諒解哦.
這個,上邊是debug version的**。偷懶被人看出來,下面給出release版本經過編譯器優化的**,優化引數 /02 /0t:
**********==for loop**********===
:00401029 xor eax, eax
:0040102b jmp 00401030
......
:00401030 .......
:00401035 inc eax
:00401036 cmp eax, 000000064
:00401039 jl 00401030
**********=while loop**********==
:00401029 mov eax, 000000064
:00401030 ..........
.....
:00401035 dec eax;
:00401036 jne 00401030
C語言基本功 什麼時候return
1,只有乙個函式中第乙個出現return的地方出現了return,剩下的地方就不會執行了,直接退出了,下面是例子。include include int a 99 int b 1 int c 0 int main printf wgz value 2 n while a 0 return 0 執行結...
Vim技能修煉教程 4 基本功
前面我們學會了外掛程式管理器和如何實現語法高亮,相信大家已經從中體會到了vim外掛程式的強大功能。現在,是時候回來補一補基本功了。vi有三種主要模式,正常模式,插入模式和視覺化模式。正常我們推薦的方式是所有的移動命令只在正常模式下進行,只有在修改的時候再進入插入模式。這個切換是如此頻繁,所以vi提供...
java基礎篇的基本功(1)
回答這種問題我們需要知道啥是物件導向?基本特徵有哪些及其含義與作用?面向過程 面向過程就是解決問題的具體步驟 第一步幹啥,第二步幹啥等等一系列的步驟.優點 效能比物件導向高,因為類呼叫時需要例項化,開銷比較大,比較消耗資源 比如微控制器 嵌入式開發 linux unix等一般採用面向過程開發,效能是...