無論何時使用短路或(|
)以下代碼段錯誤,並且在未短路時完美編譯(||
)?爲什麼當我使用|時這個C代碼段錯誤而不是||?
使用gcc -Wall ../IsNull/IsNull.c ../IsEmpty/IsEmpty.c *.c -o IsNullOrEmpty
編譯:
#include <stdbool.h>
#include "../IsNull/IsNull.h"
#include "../IsEmpty/IsEmpty.h"
#include "IsNullOrEmpty.h"
_Bool isNullOrEmpty (char *str);
_Bool isNullOrEmpty (char *str) {
return (isNull (str) | isEmpty (str));
} /* end of isNullOrEmpty() */
'isNULL'的定義是什麼? –
當你*不*短路時,你確定它沒有崩潰嗎?這更有意義。 – oldrinb
'str'在傳入時也可能不爲空,而是指程序不再有權訪問的數據。你有沒有在調試器中加載程序來查看'str'的值? – birryree