C语言前提条件和后置条件
示例
声明的一种用例是前置条件和后置条件。这对于按合同维护不变性和设计非常有用。例如,长度始终为零或正,因此此函数必须返回零或正值。
#include <stdio.h> /* Uncomment to disable `assert()` */ /* #define NDEBUG */ #include <assert.h> int length2 (int *a, int count) { int i, result = 0; /* Precondition: */ /* NULL is an invalid vector */ assert (a != NULL); /* Number of dimensions can not be negative.*/ assert (count >= 0); /* Calculation */ for (i = 0; i < count; ++i) { result = result + (a[i] * a[i]); } /* Postcondition: */ /* Resulting length can not be negative. */ assert (result >= 0); return result; } #define COUNT 3 int main (void) { int a[COUNT] = {1, 2, 3}; int *b = NULL; int r; r = length2 (a, COUNT); printf ("r = %i\n", r); r = length2 (b, COUNT); printf ("r = %i\n", r); return 0; }