日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Assert(断言) 的用法

發布時間:2025/7/14 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Assert(断言) 的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Assert

Assert是斷言的意思,頭文件為assert.h,

assert是一個宏

功 能: 測試一個條件并可能使程序終止

用 法: void assert(int test);

在單元測試中經常使用斷言

斷言只有在Debug模式下才有效,它可以有兩種形式

1.assert Expression1

2.assert Expression1:Expression2

其中Expression1應該總是一個布爾值,Expression2是斷言失敗時輸出的失敗消息的字符串。如果Expression1為假,則拋出一個 AssertionError,這是一個錯誤,而不是一個異常,也就是說是一個不可控制異常(unchecked Exception),AssertionError由于是錯誤,所以可以不捕獲,但不推薦這樣做,因為那樣會使你的系統進入不穩定狀態。

官方解釋是:編寫代碼時,我們總是會做出一些假設,斷言就是用于在代碼中捕捉這些假設,可以將斷言看作是異常處理的一種高級形式。斷言表示為一些布爾表達式,程序員相信在程序中的某個特定點該表達式值為真。可以在任何時候啟用和禁用斷言驗證,因此可以在測試時啟用斷言,而在部署時禁用斷言。同樣,程序投入運行后,最終用戶在遇到問題時可以重新起用斷言。

通俗一點說:編寫代碼時,我們假設代碼運行到某行時,某些變量的值應該是等于多少,如果不等于,說明程序邏輯不對,可能造成不穩定,

比如,我之前定義了一個變量m ,在程序運行過程中m的值是會改變的,依照正確的思路,程序運行到100行時m的值應該是100,那么,我就在程序的第101行寫上 assert(m=100);

如果m==100,那么assert返回true,如果m!=100,那么assert會返回false,程序運行到這里就會出現斷言錯誤,

可見assert很大程度上輔助測試代碼的,讓代碼更強壯更穩定

用法驗證:

程序實例1:

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 // 0001.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include<assert.h> #include<stdio.h> #include<stdlib.h> struct?ITEM { ????? ????int?key; ????? ????int?value; ????? }; void?additem(struct?ITEM* itemptr) { ????? ????assert(itemptr!=NULL); ????? } int?main(int?argc,?char* argv[]) { ????additem(NULL); ????? ????return?0; ????? }

  

?

實例2:

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 // 0001.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include<stdio.h> #include<assert.h> #include<stdlib.h> int?main(int?argc,?char* argv[]) { FILE* fp; fp=fopen("test.txt","w");//以可寫的方式打開一個文件,如果不存在就創建一個同名文件 assert(fp);//所以這里不會出錯 fclose(fp); fp=fopen("noexitfile.txt","r");//以只讀的方式打開一個文件,如果不存在就打開文件失敗 assert(fp);//所以這里出錯 fclose(fp);//程序永遠都執行不到這里來 ????return?0; ????? }

  

?

轉載于:https://www.cnblogs.com/writeLessDoMore/p/6732522.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Assert(断言) 的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。