寫壞C程式的幾大訣竅

2021-04-09 05:57:44 字數 1337 閱讀 7555

寫壞c程式的幾大訣竅

如果你常常按照下面方式寫程式,可以保證你的程式經常出錯,你也經常頭疼。

1) 根本不管程式的格式,把程式寫得老師也看不懂(自己當然更看不懂)。

用格式迷惑自己也是弄壞程式的絕招。例如:

if (a > 0)

if (x == y) ;

else

請自己分析這到底是什麼意思。

2)不關心scanf或者printf中格式串和對應引數型別匹配的問題。例如(假設x, y是double型別,n是int型別)寫:

printf("%d, %f", x, n);

scanf("%d %f", &x, &y, &n);

這樣可以保證輸入輸出總出現莫名其妙的問題,而且你和別人都找不到原因。

3)寫scanf時,在接收輸入值的變數名之前不寫&符號。

這樣做常常還可以順便摧毀你所使用的計算機系統,給自己再多找點麻煩,有自製病毒之妙。

4)寫注釋時隨便地忘記幾個結束符號。例如:

x = y + 1; /* ha ha ha

z = x * 2; /* fine fine fine */

這樣可以保證編譯程式「按照你的指示」把你的一段**吃掉。

5)在比較的時候用 = 代替 ==。例如:

if (x = y)

z = x + 5;

這可以保證x和y一定相同,而是否執行賦值就看你的運氣了。

6)定義區域性變數後,不初始化就使用。例如:

int fun(int n)

如果對指標變數這樣做,常可以帶來隱秘的破壞效果,讓最有經驗的人也難找到毛病的根源。例如寫:

int fun(int n)

這樣做有時可以順便摧毀你用的計算機系統,再給自己多找點麻煩。

7)函式定義為有返回值的,但(有時)卻不去寫return(101-102頁)。

這樣做可以保證你的程式不時出現古怪行為。

8)不關心變數的範圍,例如對迴圈次數很多的變數用 short 型別做迴圈等。

這樣做可以得到不明不白的結果;有時還可以使程式永不停止,直到你用的計算機累死為止。

9)用sizeof運算子去計算函式的陣列引數的大小,或者計算字串的大小。

這樣做一般可以保證計算結果錯誤,出現的問題難以預料。

10)不寫函式原型說明,採用過時原型說明形式(103-107頁),或者故意寫錯誤的原型說明。

這樣做一般都能騙過編譯程式,阻止它幫助你檢查程式錯誤,使你自己麻煩多多。

11)定義帶引數巨集的時候盡量節約括號,省得寫起來麻煩。

這樣可以保證在使用巨集的地方不時地出現隱含錯誤,就像埋下的地雷,檢查源程式也很難發現。

C 如何排查記憶體寫壞

mmap 例子c 記憶體寫壞問題,有很多原因造成,包括野指標 指標越界 併發場景等,出現很難排查,有很多記憶體分析工具可以使用,比如valgrind1 mprotect是一種系統呼叫,mprotect 簡單而言,mprotec可以指定一塊記憶體保護為指定的模式,比如唯讀模式,這樣當有場景破壞該模式的...

如何評價軟體寫的好還是壞?

軟體自身是一種固化的思維,因此從本質上來看,軟體是不可度量的。但這並不意味著軟體不需要度量,而只是說軟體中的度量大多都有一定限度。應用各種度量資料的時候一旦跨過這種限度,結果就會適得其反。對軟體 直觀可見的質量屬性 的度量比較簡單,比如 bug率,效能等,這裡就不提了。這裡主要關注的是軟體的內在的,...

c 壞的程式設計習慣

摘自 1 在c 程式設計中,字元型型別是最容易處理出錯的地方,代價是非常昂貴,在.net framwork中,字串是乙個相當特別的引用型別,string本省就是乙個不可繼承的密封類,但是它具有了值型別所應用的特點,但是它在clr中內 存還是儲存於託管堆之上,也就是說,當我們每次定義乙個字串型別的時候...