【问题标题】:Ignored parameters in std::cout after NULL [duplicate]在 NULL 之后忽略 std::cout 中的参数 [重复]
【发布时间】:2015-02-03 19:43:18
【问题描述】:

如果我写这段代码:

const char * b = NULL;
std::cout << "Hello!" << b;

我得到这个输出:

Hello!

但是,如果我将顺序更改为:

const char * b = NULL;
std::cout << b << "Hello!";

我没有得到任何输出,所以我很好奇。

我可以猜测 cout 的

【问题讨论】:

标签: c++ cout


【解决方案1】:

运算符有一个前置条件:

要求: s 不得为空指针。

通过打破这个前提条件,你会导致未定义的行为。任何事情都有可能发生。

(如 cmets 中所述,在这种情况下,一种流行的实现设置了 failbitbadbit,这可以解释您看到的行为。但这不是您可以依赖的。)

【讨论】:

猜你喜欢
  • 2023-01-18
  • 1970-01-01
  • 2010-10-06
  • 1970-01-01
  • 2017-01-11
  • 2021-10-31
  • 1970-01-01
  • 2022-11-17
  • 2020-11-05
相关资源
最近更新 更多