整数转布尔型的奇怪语法
整数转布尔型的奇怪语法
这个问题已经有了答案:
我开发C++还不到一年(之前专注于其他语言),现在我在看一个编写了二十年代码的人的代码。我从未见过这种语法,希望有人能提供一些帮助。
bool b; // There exists a Boolean variable. int i; // There exists an integer variable. sscanf(value, "%d", &i); // The int is assigned from a scan. b = (i != 0); // I have never seen this syntax before.
我知道这个布尔值从刚才扫描的整数中被赋值,但我不明白(*!= 0)的细节。有人能解释一下为什么这个比我更懂语言的人要这样写吗?
admin 更改状态以发布 2023年5月19日
在这里阅读一下:http://en.cppreference.com/w/cpp/language/operator_comparison
操作符"!="的结果是布尔值。所以,这个人是在说“比较'i'中的值与0”。如果'i'不等于0,则'!='返回true。
因此,实际上,b中的值为“如果'i'不为零,则为true。”
编辑:根据OP对此的评论,如果使用任何其他返回bool的运算符,您也可以遇到类似的情况。当然,当与int类型一起使用时,'!='意味着负数将评估为true。如果使用“> 0”,则0和负数都将评估为false。