初學者階段編程時,編寫基本語句可能會有隱含錯誤的方式,基本語句主要針對if、for、while、goto、switch等,它們看似簡單,但使用時隱患比較多,本文歸納了使用語句的一些規(guī)則和建議。基本語句編程舉例
if語句是C /
C語言中最簡單、最常用的語句,然而很多
編程人員用隱含錯誤的方式寫if語句,本文以“與零值比較”為例,進行討論。(1)布爾變量與零值比較:不可將布爾變量直接與TRUE、FALSE或者1、0比較。根據(jù)布爾類型的語義,零值為“假”(記為FALSE),任何非零值都是“真”(記為TRUE)。TRUE的值究竟是什么并沒有統(tǒng)一的標準,例如VC 將TRUE定義為1,而VB則將TRUE定義為-1。假設布爾變量名為flag,它與零值比較的標準if語句如下
if(flag)//表示flag為真
if(!flag) //表示flag為假
其他的用法都屬于不良風格,例如:
if(flag == TRUE)
if(flag == FALSE)
if(flag == 1 )
if(flag == 0 )
(2)整型變量與零值比較:應當將整型變量用“==”或“!=”直接與0比較。假設整型變量的名字為value,它與零值比較的標準if語句如下:
if(value == 0)
if(value != 0)
不可以模仿布爾變量的風格而寫成:
if(value)
if(!value) //會讓人誤解value是布爾變量
(3)浮點變量與零值比較:不可以將浮點變量用“==”或“!=”與任何數(shù)字比較。千萬留意,無論是float還是double類型的變量,都有精度限制,所以一定要避免將浮點變量用“==”或“!=”與數(shù)字比較,應該設法轉化成“>=”或“<=”形式。假設浮點變量的名字為x,應該將
if(x == 0.0) //隱含錯誤的比較
轉化為
if((x >= -EPSINON)
本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。