比较指针和 '\0'
是否合法?
在 clang++ 的 trunk 版本上(25836be2c)
const char *a = "foo";
if(a == '\0')
出现一个错误:指针和整数之间的比较('const char *'和'int')
然而
if(a == 0)
正如预期的那样,不会产生任何错误。
空字符与空指针在指针比较中是等效的吗?这是编译器的一个错误吗?
另一个问题是,使用“-std=c++03”标志时不会出现此错误,但是使用“-std=c++11”标志时会出现此错误。然而,当我使用g++(v4.8.5)时,在这两个标准中都不会出现错误。
nullptr
,但那不是一个字符。绝对没有理由混淆这两个概念。 - Uselessnul
的习惯,以稍微减少歧义。 OP:确实有一个“null”字符,但将其与指针进行比较仍然没有用。 - Useless