__VA_ARGS__的 bool 参数获取错误是什么原因? bool 类型输出应该是0或者1,但是为什么还会出现大于1的随机数呢?
//下列代码是抽取出来简化的代码。
#include <stdio.h>
#include <stdarg.h>
#define DEBUG(...) printf(__VA_ARGS__)
int main () {
bool ret; // 未初始化
//其它操作。
DEBUG("the result is : %d\n", ret); //输出有时候是大于1的随机数。如果对 ret 有其它赋值,但是它的类型是 bool,格式化输出怎么也应该是0或者1,是吧。
return 0;
}
不是。没有初始化,没有赋值,就是随机值。
在 C++ 里,使用这种为初始化的值大部分情况时 undefined behavior ,就是说,什么都可能发生。参见标准:basic.indet