为什么进入if语句后变量var的值为1? [关闭]

问题描述 投票:-1回答:2

在这里您可以看到列表:

int var = 0;
if(var = -5 || 5)
{
    // Value of var is 1, but why? Shouldn't it be -5 or 5?
    printf("%d", var);
}

我不想将var-55进行比较;我只想了解为什么if(var = -5 || 5)1分配给var

c comparison logical-operators
2个回答
0
投票

支票

if(var = -5 || 5)

无法按预期工作。那并不意味着“检查var是否等于5或等于-5”

首先var = -5 || 5是一个赋值,它被评估为逻辑或介于-5和5之间。在C中,每个不同于0的整数都被评估为true,因此您要为var赋值true || true = 1 ]。比较运算符为==。所以您的意思是var == -5

逻辑的另一个操作数或为5,其评估为true。即使对同一变量进行不同的相等性检查,也需要变量的[[“ repetition”]。所以您的意思是var == 5

最后,正确的表达是

if(var == -5 || var == 5) { }


-1
投票
正确的语句是if(var == 5 || var == -5),您现在拥有的表达式将分配给var布尔求值的结果;如果var为5或-5,则为1;如果不是,则为0。
© www.soinside.com 2019 - 2024. All rights reserved.