奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

C語言

C語言的assert斷言宏

時間:2025-03-10 20:58:19 C語言 我要投稿
  • 相關(guān)推薦

C語言的assert斷言宏

  大家在學(xué)習(xí)C語言的時候?qū)τ赼ssert斷言宏了解多少呢?今天小編要為大家?guī)淼氖荂語言的assert斷言宏的相關(guān)知識,希望可以在大家學(xué)習(xí)C語言的時候有所幫助,一起來看看吧!

  assert宏的原型定義在中,其作用是如果它的條件返回錯誤,則終止程序執(zhí)行,原型定義:

  #include

  void assert( int expression );

  assert的作用是現(xiàn)計算表達式 expression ,如果其值為假(即為0),那么它先向stderr打印一條出錯信息,然后通過調(diào)用 abort 來終止程序運行。

  如果assert()終止了程序,它首先會顯示失敗的測試、包含測試的文件名和行號。

  示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/* assert.c -- use assert() */
 
#include
 
#include
 
#include
 
int main()
 
{
 
double x, y, z;
 
puts("Enter a pair of numbers (0 0 to quit): ");
 
while (scanf("%lf%lf", &x, &y) == 2
 
&& (x != 0 || y != 0))
 
{
 
z = x * x - y * y; /* should be + */
 
assert(z >= 0);
 
printf("answer is %f ", sqrt(z));
 
puts("Next pair of numbers: ");
 
}
 
puts("Done");
 
return 0;
 
}

  下面是該程序的運行示例:

1
Enter a pair of numbers (0 0 to quit):

  4 3 [用戶輸入]

1
2
3
answer is 2.645751
 
Next pair of numbers:

  5 3 [用戶輸入]

1
2
3
answer is 4.000000
 
Next pair of numbers:

  3 5 [用戶輸入]

1
assertion "z >= 0" failed: file "assert.c", line 14, function: main

  該程序在求平方根之前,該程序斷言z是否大于0或等于0。程序還錯誤地減去一個值而不是加上一個值,故意讓z得不到合適的值。

  具體的錯誤提示音編譯器而異。這條消息指明的是沒有滿足z>=0的條件。

  用if語句也能完成類似的任務(wù):

1
2
3
4
5
6
7
8
9
if (z<0)
 
{
 
puts("z less than 0");
 
abort();
 
}

  但是使用asset()有幾個好處:它不僅能自動標(biāo)識文件和出問題的行號,還有一種無需修改代碼就能開啟或關(guān)閉assert()的機制。在調(diào)試結(jié)束后,可以通過在包含#include 的語句之前插入#define NDEBUG來禁用assert調(diào)用,示例代碼如下:

1
2
3
4
5
#include
 
#define NDEBUG
 
#include

  重新編譯程序,這樣編譯器就會禁用文件中的所有assert()語句。如果程序又出現(xiàn)問題,可以移除這條#define NDEBUG指令,或者把它注釋掉,然后重新編譯,這樣就重新啟用了assert()語句了。

  使用assert的缺點是,頻繁的調(diào)用會極大的影響程序的性能,增加額外的開銷。

  一些建議:

  使用斷言捕捉不應(yīng)該發(fā)生的非法情況。不要混淆非法情況與錯誤情況之間的區(qū)別,后者是必然存在的并且是一定要作出處理的。 在函數(shù)的入口處,使用斷言檢查參數(shù)的有效性(合法性)。 在編寫函數(shù)時,要進行反復(fù)的考查,并且自問:“我打算做哪些假定?”一旦確定了的假定,就要使用斷言對假定進行檢查。 一般教科書都鼓勵程序員們進行防錯設(shè)計,但要記住這種編程風(fēng)格可能會隱瞞錯誤。當(dāng)進行防錯設(shè)計時,如果“不可能發(fā)生”的事情的確發(fā)生了,則要使用斷言進行報警。


【C語言的assert斷言宏】相關(guān)文章:

assert用法(C語言)05-30

C語言assert的用法10-29

C語言assert用法06-24

C語言中assert用法09-22

C語言中的assert用法10-10

C語言中assert的用法06-02

C語言中assert的用法講解11-08

C語言assert的用法有哪些07-17

C語言宏定義07-01

主站蜘蛛池模板: 常德市| 昌邑市| 陆河县| 乐都县| 曲麻莱县| 兴安县| 汉阴县| 庄浪县| 开平市| 阳山县| 廊坊市| 西乡县| 南通市| 南部县| 永安市| 汤原县| 鹤壁市| 慈溪市| 济南市| 墨竹工卡县| 广南县| 乌兰察布市| 翼城县| 常宁市| 昭平县| 嘉黎县| 盘锦市| 义马市| 延吉市| 广南县| 青川县| 贵州省| 壤塘县| 永登县| 彭阳县| 酉阳| 泾阳县| 安康市| 阜阳市| 泗阳县| 齐齐哈尔市|