When is (*b) false?

  • 本文关键字:false is When c++
  • 更新时间 :
  • 英文 :


我只是在玩指针,我有一个问题。

我写了以下while循环:

#include <iostream>
using namespace std;
int main() {
    int a = 10;
    int *b = &a;
    while(*b){ cout << "true"; break; }
    cout << endl;
    cout << b;
    return 0;
}

条件(*b)何时为假?如果我不把它指向一个值,代码就不会编译。

另外,你如何将条件测试翻译成英语?

在这段代码中,只有当a为零时,它才会为false。事实并非如此,所以这个条件永远不会是错误的。

CCD_ 2解引用指针CCD_。由于b指向a,因此*b == a总是正确的(除非将b更改为指向其他位置)。

while (*b)的英文翻译是"只要对象b指向的值为true,就执行这个循环的主体。"当int的值为非零时,它就是true。

语句中的条件

while(*b){ cout << "true"; break; }

可以用以下方式翻译成英文

while(*b not_eq 0 ){ cout << "true"; break; }

其中not_eq对应于英语单词not equal.:)如果您有现代编译器,则应编译带有not_eq的此语句。

考虑到在这种特殊情况下*b等于10,因为b指向a

你可以用的方式写循环

while ( *b not_eq 0 ){ cout << "true"; b = 0; }

没有break语句。效果是一样的。

根据C++标准

4.12布尔转换[conv.pool]

1算术、无范围枚举、指针或指针的prvalueto成员类型可以转换为布尔类型的prvalue。零值、空指针值或空成员指针值被转换虚假;任何其他值都转换为true。

最新更新