C語言基本功教程系列 1

2021-04-12 13:27:18 字數 1778 閱讀 9428

看了那麼多文章,感覺到大家學習遊戲程式設計的熱情.經常看到很多人提出關於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等一般採用面向過程開發,效能是...