首先让我们从简单的部分开始:逻辑否定运算符!
。
对于任何逻辑操作,都会!
反转该操作的状态。如此,如此。!true
_false
!false
true
netInterface.IsLoopBack
是单个位的值。
netInterface.flags()
返回一组位。
netInterface.flags() & netInterface.IsLoopBack
检查特定位netInterface.IsLoopBack
是否在 . 返回的集合中netInterface.flags()
。
现在把它放在一起,结果netInterface.flags() & netInterface.IsLoopBack
是一个整数值。如果该位在集合中,则它是非零的。
在 C++ 中,所有非零整数值都被认为是“真”。
对这个值应用!
运算符会反转条件。
所以条件!(netInterface.flags() & netInterface.IsLoopBack)
是true
该位不在集合中。
最后一点上下文:循环遍历本地系统上的所有网络接口。
如果接口不是环回接口(地址127.0.0.1
是环回地址),则打印接口的名称和地址。
附录:通过为操作员阅读一些不错的 C++ 书籍,所有这些都可以相对容易地弄清楚。并阅读 和 的QNetworkInterface::flags()
文档enum QNetworkInterface::InterfaceFlag
。