c ++中if参数的说明

时间:2016-05-29 20:15:11

标签: c++

考虑代码的给定部分。以下if语句有什么作用?

int* pItem;

 if(pItem)

 {
       pItem->getvalue();

  }

5 个答案:

答案 0 :(得分:0)

在这种特殊情况下,if语句

if (pItem) { ... }

相当于

if (pItem != nullptr) { ... }

换句话说,它测试指针是否为空。

一般来说,如果在if语句中看到非布尔表达式,C ++会隐式将其转换为bool。对于指针,这将测试指针是否为空。对于整数类型,这将测试整数是否为0.对于对象类型,这将尝试使用隐式转换运算符。

答案 1 :(得分:0)

  

以下if语句有什么作用?

它调用未定义的行为,因为pItem未初始化。

 if(pItem)

语句尝试避免取消引用pItem

 pItem->getvalue();

pItem等于0nullptr时。

但如上所述它没有被初始化,因此它是未定义的行为。

答案 2 :(得分:0)

概念是if子句阻止代码使用nullptr。

但是,int变量没有方法,所以int-> pItem以不同的方式无效。

我希望在“int * pItem”中,pItem是指向用户定义类型(即类)的指针。但是int是一个保留字,因此是一个没有方法的POD。

答案 3 :(得分:0)

在C ++中,如果表达式为零,表达式的计算结果为false,否则计算结果为true

if (<expression>)

在这种情况下pItem是表达式,因此我们测试它是否为零(null)。它相当于

if (pItem != nullptr)

你可以把它想象成&#34;如果pItem有一个值(非零)&#34;

答案 4 :(得分:0)

如果这是您拥有的所有代码,那么您的程序将受到未定义的行为的影响。您正在使用未初始化的变量。

如果指针被正确初始化,那么它会根据它指向的内容在if语句中计算true / false。如果它的值是nullptr或NULL,则它的计算结果为false。否则评估结果为真。