首页 > 解决方案 > 为什么编译不会失败?

问题描述

正如预期的那样,对于以下程序,C/C++ 编译确实失败并出现“警告:指针和整数之间的比较”:

#include <stdbool.h>
int main(void) { return (int*)42 == true; }

true但是,当文字更改为时,编译不会失败false。为什么?

标签: c++ccompiler-errorscompiler-warnings

解决方案


在 C 中,宏false定义为:

#define false   0

因此,您将指针与 0 进行比较,0 是一个有效的空指针常量。


推荐阅读