布林表示式中的整數和指標
所有整數或指標都可以在被解釋為真值的表示式中使用。
int main(int argc, char* argv[]) {
if (argc % 4) {
puts("arguments number is not divisible by 4");
} else {
puts("argument number is divisible by 4");
}
...
表達 argc % 4
被評估並導致 0
,1
,2
或 3
中的一個值。第一個,0
是唯一的假值並將執行帶入 else
部分。所有其他值都是真實的並進入 if
部分。
double* A = malloc(n*sizeof *A);
if (!A) {
perror("allocation problems");
exit(EXIT_FAILURE);
}
這裡評估指標 A
,如果它是空指標,則檢測到錯誤並退出程式。
很多人喜歡用 A == NULL
來寫一些東西,但是如果你把這種指標比較作為其他複雜表達的一部分,事情很快就會難以閱讀。
char const* s = ....; /* some pointer that we receive */
if (s != NULL && s[0] != '\0' && isalpha(s[0])) {
printf("this starts well, %c is alphabetic\n", s[0]);
}
要進行檢查,你必須掃描表示式中的複雜程式碼並確保運算子首選項。
char const* s = ....; /* some pointer that we receive */
if (s && s[0] && isalpha(s[0])) {
printf("this starts well, %c is alphabetic\n", s[0]);
}
相對容易捕獲:如果指標有效,我們檢查第一個字元是否為非零,然後檢查它是否是一個字母。