Matlab轉C注意點

2022-05-19 19:08:18 字數 2753 閱讀 4804

(1)版權資訊。

(2)檔名稱,摘要。

(3)當前版本號,作者,完成日期。

(4)版本資訊。

圖1.1 主程式說明

圖1.2 子程式說明

圖1.3 標頭檔案結構示例

(1)程式的空行起著分隔程式段落的作用。空行得體可使程式的布局清晰。函式體外的空行,在每個類宣告之後、每個函式定義結束之後都要加空行。

函式體內,邏輯上關係密切的語句不加空行,其它地方應加空行分割,從而增強程式的可讀性。

(2)書寫程式時**行的基本要求:if、for、while、do等語句自佔一行,執行語句不得緊跟其後。不論執行語句有多少都要加{}。這樣可以防止書寫失誤。

(3)對齊操作:程式的分界符『』應獨佔一行並且位於同一列,同時與引用它們的語句對齊,之內的**塊在『{』右邊數格處左對齊。

(4)程式的注釋。邊寫**邊注釋,修改**同時修改相應的注釋,以保證注釋與**的一致性。不再有用的注釋要刪除。注釋應當準確易懂,不加多餘的注釋。

函式和變數的命名規則大致遵循以下幾個原則:

(1)使用通用的共性的一些變數,如通用的迴圈變數i,j,m, n;

(2)函式和變數的命名要直觀且可以拼讀,可望文知意,並且與所編寫的程式相關聯,字元之間使用下劃線來分割單詞,如r_data, g_data, b_data;

(3)全域性變數前加上字母g_, 以便於與區域性變數相區分,程式中不要出現識別符號完全相同的區域性變數和全域性變數,儘管兩者的作用域不同而不會發生語法錯誤,但會使人誤解;

(4)變數和引數用小寫字母開頭的單詞組合而成,常量全用大寫的字母,用下劃線分割單詞。

(5)了防止某一軟體庫中的一些識別符號和其它軟體庫中的衝突,可以為各種識別符號加上能反映軟體性質的字首。例如計算機視覺技術標準opencv的所有庫函式均以cv開頭,所有常量(或巨集定義)均以cv開頭。

(1)c++/c語言的運算子數目很多,優先順序和結合順序差異很大, 一元運算子 + - * 的優先順序高於對應的二元運算子,關係運算子的優先順序高於邏輯運算子;用括號確定表示式的操作順序,避免使用預設的優先順序。

(2)if語句判斷兩個資料是否相等

a)布林變數與零值比較

不可將布林變數直接與true、false或者1、0進行比較。

根據布林型別的語義,零值為「假」(記為false),任何非零值都是「真」(記為true)。true的值究竟是什麼並沒有統一的標準。

假設布林變數名字為flag,它與零值比較的標準if語句如下:

if (flag) // 表示flag為真 if (!flag) // 表示flag為假

do somethingdo something;

b)整型變數與零值比較

應當將整型變數用「==」或「!=」直接與0比較。

假設整型變數的名字為value,它與零值比較的標準if語句如下:

if (value == 0)

if (value != 0)

c)浮點變數與零值比較

不可將浮點變數用「==」或「!=」與任何數字比較。

千萬要留意,無論是float還是double型別的變數,都有精度限制。所以一定要避免將浮點變數用「==」或「!=」與數字比較,應該設法轉化成「>=」或「<=」形式。

假設浮點變數的名字為x,應當將

if (x == 0.0) // 隱含錯誤的比較

轉化為if ((x>=-epsinon) && (x<=epsinon))

其中epsinon是允許的誤差(即精度)

d)指標變數與零值的比較

應當將指標變數用「==」或「!=」與null比較。

指標變數的零值是「空」(記為null)。儘管null的值與0相同,但是兩者意義不同。假設指標變數的名字為p,它與零值比較的標準if語句如下:

if (p == null) // p與null顯式比較,強調p是指標變數

if (p != null)

不要寫成

if (p == 0) // 容易讓人誤解p是整型變數

if (p != 0)

或者if (p容易讓人誤解p是布林變數

if (!p)

(3)迴圈語句的效率

c++/c迴圈語句中,for語句使用頻率最高,while語句其次,do語句很少用。在多重迴圈中,如果有可能,應當將最長的迴圈放在最內層,最短的迴圈放在最外層,以減少cpu跨切迴圈層的次數。

圖 1.4 低效率,長迴圈在外層圖 1.5 高效率,長迴圈在內層

(4)常量標示符

所謂常量,即它的值在執行期間恆定不變。c語言用 #define來定義常量(稱為巨集常量)。c++ 語言除了 #define外還可以用const來定義常量(稱為const常量)。

除了使用這兩種以外,還可以使用typedef,而且這個更具有通用性,比define用起來更方便。如下例樣:

#definemax 100c語言的巨集常量 */

const intmax = 100c++ 語言的const常量

const float pi = 3.14159; // c++ 語言的const常量

typedef 100 max //定義常量

typedef char *pchar;

pchar pa, pbchar *pa, pb;

(4)使用引用

引用的一些規則如下:引用被建立的同時必須被初始化(指標則可以在任何時候被初始化)。不能有null引用,引用必須與合法的儲存單元關聯(指標則可以是null)。

一旦引用被初始化,就不能改變引用的關係(指標則可以隨時改變所指的物件)。在函式引數的傳遞過程中,引用傳遞比指標傳遞更加直觀。

C程式設計注意事項

static的作用 在c語言中,static的字面意思很容易把我們匯入歧途,其實它的作用有三條。1 先來介紹它的第一條也是最重要的一條 隱藏。當我們同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性。為理解這句話,我舉例來說明。我們要同時編譯兩個原始檔,乙個是a.c,另...

C語言注意事項

c語言程式課程設計 課程編號 16020173 課程名稱 c語言程式課程設計 英文名稱 c programming curriculum design 適應專業 資訊與計算科學專業 執筆人 郭紅微 一 學時與學分 總學時 1周總學分 2 二 課程設計的任務 性質與目的 c語言課程設計 是在學習 c語...

測量注意點

一 測量問題 1 量長度時最好測量二次,從左到右和從右到左,以免第一次看錯尺寸。2 測量吊頂高度時,要量幾個不同方向的準高點,同時看扣板下有沒有橫樑。3 測量時要看腰線 機動插座底部到地磚高度,同時要看窗戶高度 複測時更要留意 4 測量時要量煤氣表和管道離牆距離及高度 煙道高度 進出水高度 排水主管...