国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
編程規(guī)范(2)
編程規(guī)范(2)
7 可測(cè)性
規(guī)則7-1:在同一項(xiàng)目組或產(chǎn)品組內(nèi),要有一套統(tǒng)一的為集成測(cè)試與系統(tǒng)聯(lián)調(diào)準(zhǔn)備的調(diào)測(cè)開關(guān)及相應(yīng)打印函數(shù),并且要有詳細(xì)的說明。

規(guī)則7-2:在同一項(xiàng)目組或產(chǎn)品組內(nèi),調(diào)測(cè)打印出的信息串的格式要有統(tǒng)一的形式。信息串中至少要有所在模塊名(或源文件名)及行號(hào)。
說明:統(tǒng)一的調(diào)測(cè)信息格式便于集成測(cè)試。

規(guī)則7-3:編程的同時(shí)要為單元測(cè)試選擇恰當(dāng)?shù)臏y(cè)試點(diǎn),并仔細(xì)構(gòu)造測(cè)試代碼、測(cè)試用例,同時(shí)給出明確的注釋說明。測(cè)試代碼部分應(yīng)作為(模塊中的)一個(gè)子模塊,以方便測(cè)試代碼在模塊中的安裝與拆卸(通過調(diào)測(cè)開關(guān))。
說明:為單元測(cè)試而準(zhǔn)備。

規(guī)則7-4:在進(jìn)行集成測(cè)試/系統(tǒng)聯(lián)調(diào)之前,要構(gòu)造好測(cè)試環(huán)境、測(cè)試項(xiàng)目及測(cè)試用例,同時(shí)仔細(xì)分析并優(yōu)化測(cè)試用例,以提高測(cè)試效率。
說明:好的測(cè)試用例應(yīng)盡可能模擬出程序所遇到的邊界值、各種復(fù)雜環(huán)境及一些極端情況等。

規(guī)則7-5:使用斷言來發(fā)現(xiàn)軟件問題,提高代碼可測(cè)性。
說明:斷言是對(duì)某種假設(shè)條件進(jìn)行檢查(可理解為若條件成立則無動(dòng)作,否則應(yīng)報(bào)告),它可以快速發(fā)現(xiàn)并定位軟件問題,同時(shí)對(duì)系統(tǒng)錯(cuò)誤進(jìn)行自動(dòng)報(bào)警。斷言可以對(duì)在系統(tǒng)中隱藏很深,用其它手段極難發(fā)現(xiàn)的問題進(jìn)行定位,從而縮短軟件問題定位時(shí)間,提高系統(tǒng)的可測(cè)性。實(shí)際應(yīng)用時(shí),可根據(jù)具體情況靈活地設(shè)計(jì)斷言。
示例:下面是C語言中的一個(gè)斷言,用宏來設(shè)計(jì)的。(其中NULL為0L)
#ifdef _EXAM_ASSERT_TEST_ // 若使用斷言測(cè)試

void exam_assert( char * file_name, unsigned int line_no )
{
printf( "\n[EXAM]Assert failed: %s, line %u\n",
file_name, line_no );
abort( );
}

#define EXAM_ASSERT( condition )
if (condition) // 若條件成立,則無動(dòng)作
NULL;
else // 否則報(bào)告
exam_assert( __FILE__, __LINE__ )

#else // 若不使用斷言測(cè)試

#define EXAM_ASSERT(condition) NULL

#endif /* end of ASSERT */

規(guī)則7-6:用斷言來檢查程序正常運(yùn)行時(shí)不應(yīng)發(fā)生但在調(diào)測(cè)時(shí)有可能發(fā)生的非法情況。

規(guī)則7-7:不能用斷言來檢查最終產(chǎn)品肯定會(huì)出現(xiàn)且必須處理的錯(cuò)誤情況。
說明:斷言是用來處理不應(yīng)該發(fā)生的錯(cuò)誤情況的,對(duì)于可能會(huì)發(fā)生的且必須處理的情況要寫防錯(cuò)程序,而不是斷言。如某模塊收到其它模塊的消息后,要對(duì)消息的合理性進(jìn)行檢查,此過程為正常的錯(cuò)誤檢查,不能用斷言來實(shí)現(xiàn)。

規(guī)則7-8:對(duì)較復(fù)雜的斷言加上明確的注釋。
說明:為復(fù)雜的斷言加注釋,可澄清斷言含義并減少不必要的誤用。

規(guī)則7-9:用斷言確認(rèn)函數(shù)的參數(shù)。
示例:假設(shè)某函數(shù)參數(shù)中有一個(gè)指針,那么使用指針前可對(duì)它檢查,如下。
int exam_fun( unsigned char *str )
{
EXAM_ASSERT( str != NULL ); // 用斷言檢查"假設(shè)指針不為空"這個(gè)條件

... //other program code
}

規(guī)則7-10:用斷言保證沒有定義的特性或功能不被使用。
示例:假設(shè)某通信模塊在設(shè)計(jì)時(shí),準(zhǔn)備提供"無連接"和"連接" 這兩種業(yè)務(wù)。但當(dāng)前的版本中僅實(shí)現(xiàn)了"無連接"業(yè)務(wù),且在此版本的正式發(fā)行版中,用戶(上層模塊)不應(yīng)產(chǎn)生"連接"業(yè)務(wù)的請(qǐng)求,那么在測(cè)試時(shí)可用斷言檢查用戶是否使用"連接"業(yè)務(wù)。如下。
#define EXAM_CONNECTIONLESS 0 // 無連接業(yè)務(wù)
#define EXAM_CONNECTION 1 // 連接業(yè)務(wù)

int msg_process( EXAM_MESSAGE *msg )
{
unsigned char service; /* message service class */

EXAM_ASSERT( msg != NULL );

service = get_msg_service_class( msg );

EXAM_ASSERT( service != EXAM_CONNECTION ); // 假設(shè)不使用連接業(yè)務(wù)

... //other program code
}

規(guī)則7-11:用斷言對(duì)程序開發(fā)環(huán)境(OS/Compiler/Hardware)的假設(shè)進(jìn)行檢查。
說明:程序運(yùn)行時(shí)所需的軟硬件環(huán)境及配置要求,不能用斷言來檢查,而必須由一段專門代碼處理。用斷言僅可對(duì)程序開發(fā)環(huán)境中的假設(shè)及所配置的某版本軟硬件是否具有某種功能的假設(shè)進(jìn)行檢查。如某網(wǎng)卡是否在系統(tǒng)運(yùn)行環(huán)境中配置了,應(yīng)由程序中正式代碼來檢查;而此網(wǎng)卡是否具有某設(shè)想的功能,則可由斷言來檢查。
對(duì)編譯器提供的功能及特性假設(shè)可用斷言檢查,原因是軟件最終產(chǎn)品(即運(yùn)行代碼或機(jī)器碼)與編譯器已沒有任何直接關(guān)系,即軟件運(yùn)行過程中(注意不是編譯過程中)不會(huì)也不應(yīng)該對(duì)編譯器的功能提出任何需求。
示例:用斷言檢查編譯器的int型數(shù)據(jù)占用的內(nèi)存空間是否為2,如下。
EXAM_ASSERT( sizeof( int ) == 2 );



規(guī)則7-12:正式軟件產(chǎn)品中應(yīng)把斷言及其它調(diào)測(cè)信息去掉(即把有關(guān)的調(diào)測(cè)開關(guān)關(guān)掉)。
說明:加快軟件運(yùn)行速度。

規(guī)則7-13:在軟件系統(tǒng)中設(shè)置與取消有關(guān)測(cè)試手段,不能對(duì)軟件實(shí)現(xiàn)的功能等產(chǎn)生影響。
說明:即有測(cè)試代碼的軟件和關(guān)掉測(cè)試代碼的軟件,在功能行為上應(yīng)一致。

規(guī)則7-14:用調(diào)測(cè)開關(guān)來切換軟件的DEBUG版和正式版,而不要同時(shí)存在正式版本和DEBUG版本的不同源文件,以減少維護(hù)的難度。


建議7-1:在編寫代碼之前,應(yīng)預(yù)先設(shè)計(jì)好程序調(diào)試與測(cè)試的方法和手段,并設(shè)計(jì)好各種調(diào)測(cè)開關(guān)及相應(yīng)測(cè)試代碼如打印函數(shù)等。
說明:程序的調(diào)試與測(cè)試是軟件生存周期中很重要的一個(gè)階段,如何對(duì)軟件進(jìn)行較全面、高率的測(cè)試并盡可能地找出軟件中的錯(cuò)誤就成為很關(guān)鍵的問題。因此在編寫源代碼之前,除了要有一套比較完善的測(cè)試計(jì)劃外,還應(yīng)設(shè)計(jì)出一系列代碼測(cè)試手段,為單元測(cè)試、集成測(cè)試及系統(tǒng)聯(lián)調(diào)提供方便。

建議7-2:調(diào)測(cè)開關(guān)應(yīng)分為不同級(jí)別和類型。
說明:調(diào)測(cè)開關(guān)的設(shè)置及分類應(yīng)從以下幾方面考慮:針對(duì)模塊或系統(tǒng)某部分代碼的調(diào)測(cè);針對(duì)模塊或系統(tǒng)某功能的調(diào)測(cè);出于某種其它目的,如對(duì)性能、容量等的測(cè)試。這樣做便于軟件功能的調(diào)測(cè),并且便于模塊的單元測(cè)試、系統(tǒng)聯(lián)調(diào)等。

建議7-3:編寫防錯(cuò)程序,然后在處理錯(cuò)誤之后可用斷言宣布發(fā)生錯(cuò)誤。
示例:假如某模塊收到通信鏈路上的消息,則應(yīng)對(duì)消息的合法性進(jìn)行檢查,若消息類別不是通信協(xié)議中規(guī)定的,則應(yīng)進(jìn)行出錯(cuò)處理,之后可用斷言報(bào)告,如下例。
#ifdef _EXAM_ASSERT_TEST_ // 若使用斷言測(cè)試

/* Notice: this function does not call 'abort' to exit program */
void assert_report( char * file_name, unsigned int line_no )
{
printf( "\n[EXAM]Error Report: %s, line %u\n",
file_name, line_no );
}

#define ASSERT_REPORT( condition )
if ( condition ) // 若條件成立,則無動(dòng)作
NULL;
else // 否則報(bào)告
assert_report ( __FILE__, __LINE__ )

#else // 若不使用斷言測(cè)試

#define ASSERT_REPORT( condition ) NULL

#endif /* end of ASSERT */

int msg_handle( unsigned char msg_name, unsigned char * msg )
{
switch( msg_name )
{
case MSG_ONE:
... // 消息MSG_ONE處理
return MSG_HANDLE_SUCCESS;

... // 其它合法消息處理

default:
... // 消息出錯(cuò)處理
ASSERT_REPORT( FALSE ); // "合法"消息不成立,報(bào)告
return MSG_HANDLE_ERROR;
}
}
8 程序效率
規(guī)則8-1:編程時(shí)要經(jīng)常注意代碼的效率。
說明:代碼效率分為全局效率、局部效率、時(shí)間效率及空間效率。全局效率是站在整個(gè)系統(tǒng)的角度上的系統(tǒng)效率;局部效率是站在模塊或函數(shù)角度上的效率;時(shí)間效率是程序處理輸入任務(wù)所需的時(shí)間長短;空間效率是程序所需內(nèi)存空間,如機(jī)器代碼空間大小、數(shù)據(jù)空間大小、??臻g大小等。

規(guī)則8-2:在保證軟件系統(tǒng)的正確性、穩(wěn)定性、可讀性及可測(cè)性的前提下,提高代碼效率。
說明:不能一味地追求代碼效率,而對(duì)軟件的正確性、穩(wěn)定性、可讀性及可測(cè)性造成影響。

規(guī)則8-3:局部效率應(yīng)為全局效率服務(wù),不能因?yàn)樘岣呔植啃识鴮?duì)全局效率造成影響。

規(guī)則8-4:通過對(duì)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的劃分與組織的改進(jìn),以及對(duì)程序算法的優(yōu)化來提高空間效率。
說明:這種方式是解決軟件空間效率的根本辦法。
示例:如下記錄學(xué)生學(xué)習(xí)成績的結(jié)構(gòu)不合理。
typedef unsigned char BYTE;
typedef unsigned short WORD;

typedef struct STUDENT_SCORE_STRU
{
BYTE name[8];
BYTE age;
BYTE sex;
BYTE class;
BYTE subject;
float score;
} STUDENT_SCORE;

因?yàn)槊课粚W(xué)生都有多科學(xué)習(xí)成績,故如上結(jié)構(gòu)將占用較大空間。應(yīng)如下改進(jìn)(分為兩個(gè)結(jié)構(gòu)),總的存貯空間將變小,操作也變得更方便。
typedef struct STUDENT_STRU
{
BYTE name[8];
BYTE age;
BYTE sex;
BYTE class;
} STUDENT;

typedef struct STUDENT_SCORE_STRU
{
WORD student_index;
BYTE subject;
float score;
} STUDENT_SCORE;

規(guī)則8-5:循環(huán)體內(nèi)工作量最小化。
說明:應(yīng)仔細(xì)考慮循環(huán)體內(nèi)的語句是否可以放在循環(huán)體之外,使循環(huán)體內(nèi)工作量最小,從而提高程序的時(shí)間效率。
示例:如下代碼效率不高。
for (ind = 0; ind < MAX_ADD_NUMBER; ind++)
{
sum += ind;
back_sum = sum; /* backup sum */
}

語句"back_sum = sum;"完全可以放在for語句之后,如下。
for (ind = 0; ind < MAX_ADD_NUMBER; ind++)
{
sum += ind;
}
back_sum = sum; /* backup sum */

建議8-1:仔細(xì)分析有關(guān)算法,并進(jìn)行優(yōu)化。


建議8-2:仔細(xì)考查、分析系統(tǒng)及模塊處理輸入(如事務(wù)、消息等)的方式,并加以改進(jìn)。

建議8-3:對(duì)模塊中函數(shù)的劃分及組織方式進(jìn)行分析、優(yōu)化,改進(jìn)模塊中函數(shù)的組織結(jié)構(gòu),提高程序效率。
說明:軟件系統(tǒng)的效率主要與算法、處理任務(wù)方式、系統(tǒng)功能及函數(shù)結(jié)構(gòu)有很大關(guān)系,僅在代碼上下功夫一般不能解決根本問題。

建議8-4:編程時(shí),要隨時(shí)留心代碼效率;優(yōu)化代碼時(shí),要考慮周全。

建議8-5:不應(yīng)花過多的時(shí)間拼命地提高調(diào)用不很頻繁的函數(shù)代碼效率。
說明:對(duì)代碼優(yōu)化可提高效率,但若考慮不周很有可能引起嚴(yán)重后果。

建議8-6:要仔細(xì)地構(gòu)造或直接用匯編編寫調(diào)用頻繁或性能要求極高的函數(shù)。
說明:只有對(duì)編譯系統(tǒng)產(chǎn)生機(jī)器碼的方式以及硬件系統(tǒng)較為熟悉時(shí),才可使用匯編嵌入方式。嵌入?yún)R編可提高時(shí)間及空間效率,但也存在一定風(fēng)險(xiǎn)。

建議8-7:在保證程序質(zhì)量的前提下,通過壓縮代碼量、去掉不必要代碼以及減少不必要的局部和全局變量,來提高空間效率。
說明:這種方式對(duì)提高空間效率可起到一定作用,但往往不能解決根本問題。

建議8-8:在多重循環(huán)中,應(yīng)將最忙的循環(huán)放在最內(nèi)層。
說明:減少CPU切入循環(huán)層的次數(shù)。
示例:如下代碼效率不高。
for (row = 0; row < 100; row++)
{
for (col = 0; col < 5; col++)
{
sum += a[row][col];
}
}

可以改為如下方式,以提高效率。
for (col = 0; col < 5; col++)
{
for (row = 0; row < 100; row++)
{
sum += a[row][col];
}
}

建議8-9:盡量減少循環(huán)嵌套層次。

建議8-10:避免循環(huán)體內(nèi)含判斷語句,應(yīng)將循環(huán)語句置于判斷語句的代碼塊之中。
說明:目的是減少判斷次數(shù)。循環(huán)體中的判斷語句是否可以移到循環(huán)體外,要視程序的具體情況而言,一般情況,與循環(huán)變量無關(guān)的判斷語句可以移到循環(huán)體外,而有關(guān)的則不可以。
示例:如下代碼效率稍低。
for (ind = 0; ind < MAX_RECT_NUMBER; ind++)
{
if (data_type == RECT_AREA)
{
area_sum += rect_area[ind];
}
else
{
rect_length_sum += rect[ind].length;
rect_width_sum += rect[ind].width;
}
}

因?yàn)榕袛嗾Z句與循環(huán)變量無關(guān),故可如下改進(jìn),以減少判斷次數(shù)。
if (data_type == RECT_AREA)
{
for (ind = 0; ind < MAX_RECT_NUMBER; ind++)
{
area_sum += rect_area[ind];
}
}
else
{
for (ind = 0; ind < MAX_RECT_NUMBER; ind++)
{
rect_length_sum += rect[ind].length;
rect_width_sum += rect[ind].width;
}
}

建議8-11:盡量用乘法或其它方法代替除法,特別是浮點(diǎn)運(yùn)算中的除法。
說明:浮點(diǎn)運(yùn)算除法要占用較多CPU資源。
示例:如下表達(dá)式運(yùn)算可能要占較多CPU資源。
#define PAI 3.1416
radius = circle_length / (2 * PAI);

應(yīng)如下把浮點(diǎn)除法改為浮點(diǎn)乘法。
#define PAI_RECIPROCAL (1 / 3.1416 ) // 編譯器編譯時(shí),將生成具體浮點(diǎn)數(shù)
radius = circle_length * PAI_RECIPROCAL / 2;

建議8-12:不要一味追求緊湊的代碼。
說明:因?yàn)榫o湊的代碼并不代表高效的機(jī)器碼。
10 代碼編輯、編譯、審查
規(guī)則10-1:在產(chǎn)品軟件(項(xiàng)目組)中,使用統(tǒng)一的編譯配置文件。

規(guī)則10-2:通過代碼走讀及審查方式對(duì)代碼進(jìn)行檢查。
說明:代碼走讀主要是對(duì)程序的編程風(fēng)格如注釋、命名等以及編程時(shí)易出錯(cuò)的內(nèi)容進(jìn)行檢查,可由開發(fā)人員自己或開發(fā)人員交叉的方式進(jìn)行;代碼審查主要是對(duì)程序?qū)崿F(xiàn)的功能及程序的穩(wěn)定性、安全性、可靠性等進(jìn)行檢查及評(píng)審,可通過自審、交叉審核或指定部門抽查等方式進(jìn)行。

規(guī)則10-3:測(cè)試組測(cè)試產(chǎn)品之前,應(yīng)對(duì)代碼進(jìn)行抽查及評(píng)審。

建議10-1:編寫代碼時(shí)要注意隨時(shí)保存,并定期備份,防止由于斷電、硬盤損壞等原因造成代碼丟失。

建議10-2:同產(chǎn)品軟件(項(xiàng)目組)內(nèi),最好使用相同的編輯器,并使用相同的設(shè)置選項(xiàng)。

建議10-3:合理地設(shè)計(jì)軟件系統(tǒng)目錄,方便開發(fā)人員使用。
說明:方便、合理的軟件系統(tǒng)目錄,可提高工作效率。目錄構(gòu)造的原則是方便有關(guān)源程序的存儲(chǔ)、查詢、編譯、鏈接等工作,同時(shí)目錄中還應(yīng)具有工作目錄----所有的編譯、鏈接等工作應(yīng)在此目錄中進(jìn)行,工具目錄----有關(guān)文件編輯器、文件查找等工具可存放在此目錄中。

建議10-4:某些語句經(jīng)編譯后產(chǎn)生告警,但如果你認(rèn)為它是正確的,那么應(yīng)通過某種手段去掉告警信息。
說明:在Borland C/C++中,可用"#pragma warn"來關(guān)掉或打開某些告警。
示例:
#pragma warn -rvl // 關(guān)閉告警
int examples_fun( void )
{
// 程序,但無return語句。
}
#pragma warn +rvl // 打開告警
編譯函數(shù)examples_fun時(shí)本應(yīng)產(chǎn)生"函數(shù)應(yīng)有返回值"告警,但由于關(guān)掉了此告警信息顯示,所以編譯時(shí)將不會(huì)產(chǎn)生此告警提示。

建議10-5:使用代碼檢查工具(如C語言用PC-Lint)對(duì)源程序檢查。
11 代碼測(cè)試、維護(hù)
規(guī)則11-1:單元測(cè)試要求至少達(dá)到語句覆蓋。
規(guī)則11-2:單元測(cè)試開始要跟蹤每一條語句,并觀察數(shù)據(jù)流及變量的變化。
規(guī)則11-3:清理、整理或優(yōu)化后的代碼要經(jīng)過審查及測(cè)試。
規(guī)則11-4:代碼版本升級(jí)要經(jīng)過嚴(yán)格測(cè)試。
規(guī)則11-5:使用工具軟件對(duì)代碼版本進(jìn)行維護(hù)。
規(guī)則11-6:正式版本上軟件的任何修改都應(yīng)有詳細(xì)的文檔記錄。
建議11-1:發(fā)現(xiàn)錯(cuò)誤立即修改,并且要記錄下來。
建議11-2:關(guān)鍵的代碼在匯編級(jí)跟蹤。
建議11-3:仔細(xì)設(shè)計(jì)并分析測(cè)試用例,使測(cè)試用例覆蓋盡可能多的情況,以提高測(cè)試用例的效率。
建議11-4:盡可能模擬出程序的各種出錯(cuò)情況,對(duì)出錯(cuò)處理代碼進(jìn)行充分的測(cè)試。
建議11-5:仔細(xì)測(cè)試代碼處理數(shù)據(jù)、變量的邊界情況。
建議11-6:保留測(cè)試信息,以便分析、總結(jié)經(jīng)驗(yàn)及進(jìn)行更充分的測(cè)試。
建議11-7:不應(yīng)通過"試"來解決問題,應(yīng)尋找問題的根本原因。
建議11-8:對(duì)自動(dòng)消失的錯(cuò)誤進(jìn)行分析,搞清楚錯(cuò)誤是如何消失的。
建議11-9:修改錯(cuò)誤不僅要治表,更要治本。
建議11-10:測(cè)試時(shí)應(yīng)設(shè)法使很少發(fā)生的事件經(jīng)常發(fā)生。
建議11-11:明確模塊或函數(shù)處理哪些事件,并使它們經(jīng)常發(fā)生。
建議11-12: 堅(jiān)持在編碼階段就對(duì)代碼進(jìn)行徹底的單元測(cè)試,不要等以后的測(cè)試工作來發(fā)現(xiàn)問題。
建議11-13:去除代碼運(yùn)行的隨機(jī)性(如去掉無用的數(shù)據(jù)、代碼及盡可能防止并注意函數(shù)中的"內(nèi)部寄存器"等),讓函數(shù)運(yùn)行的結(jié)果可預(yù)測(cè),并使出現(xiàn)的錯(cuò)誤可再現(xiàn)。
12 宏
規(guī)則12-1:用宏定義表達(dá)式時(shí),要使用完備的括號(hào)。
示例:如下定義的宏都存在一定的風(fēng)險(xiǎn)。
#define RECTANGLE_AREA( a, b ) a * b
#define RECTANGLE_AREA( a, b ) (a * b)
#define RECTANGLE_AREA( a, b ) (a) * (b)
正確的定義應(yīng)為:
#define RECTANGLE_AREA( a, b ) ((a) * (b))

規(guī)則12-2:將宏所定義的多條表達(dá)式放在大括號(hào)中。
示例:下面的語句只有宏的第一條表達(dá)式被執(zhí)行。為了說明問題,for語句的書寫稍不符規(guī)范。
#define INTI_RECT_VALUE( a, b )
a = 0;
b = 0;

for (index = 0; index < RECT_TOTAL_NUM; index++)
INTI_RECT_VALUE( rect.a, rect.b );

正確的用法應(yīng)為:
#define INTI_RECT_VALUE( a, b )
{
a = 0;
b = 0;
}

for (index = 0; index < RECT_TOTAL_NUM; index++)
{
INTI_RECT_VALUE( rect[index].a, rect[index].b );
}

規(guī)則12-3:使用宏時(shí),不允許參數(shù)發(fā)生變化。
示例:如下用法可能導(dǎo)致錯(cuò)誤。
#define SQUARE( a ) ((a) * (a))

int a = 5;
int b;
b = SQUARE( a++ ); // 結(jié)果:a = 7,即執(zhí)行了兩次增1。

正確的用法是:
b = SQUARE( a );
a++; // 結(jié)果:a = 6,即只執(zhí)行了一次增1。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
程序設(shè)計(jì)原則和測(cè)試(自動(dòng)化)
折半查找算法
【C#】干掉for循環(huán) - K# - 博客園
純干貨|有關(guān)Python的12到練習(xí)題,你敢來挑戰(zhàn)嗎?
【HttpRunner v3.x】筆記
【每周一坑】矩陣旋轉(zhuǎn)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服