首页 > 解决方案 > Can std::cout print "NULL" instead of 0 when printing a null pointer?

问题描述

Can std::cout print "NULL" instead of 0 when printing a null pointer?? I can write a simple if statement like

if(pointer == nullptr)
  std::cout << "NULL";

But can I get the same result without using an if statement?

标签: c++pointers

解决方案


使用 if 语句无法真正逃脱,但可以使用三元运算符将其变成单线: (p == NULL ? std::cout << "NULL" : std::cout << p);

#include <iostream>

int main() {
  void *p = NULL;
  (p == NULL ? std::cout << "NULL" : std::cout << p);
  std::cout << std::endl;

  p = new int;
  (p == NULL ? std::cout << "NULL" : std::cout << p);
  std::cout << std::endl;
}

演示


推荐阅读