__VA_ARGS__的 bool 参数获取错误是什么原因?

__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;
}
阅读 2k
1 个回答
它的类型是 bool,格式化输出怎么也应该是0或者1,是吧。

不是。没有初始化,没有赋值,就是随机值。


在 C++ 里,使用这种为初始化的值大部分情况时 undefined behavior ,就是说,什么都可能发生。参见标准:basic.indet

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题