我想弄清楚这个程序中的== sign意味着什么?
int main()
{
int x = 2, y = 6, z = 6;
x = y == z;
printf("%d", x);
}
答案 0 :(得分:20)
==
运算符测试是否相等。例如:
if ( a == b )
dosomething();
而且,在你的例子中:
x = y == z;
如果y等于z,则x为真(1)。如果y 不等于z,则x为假(0)。
新手C程序员常犯的错误(以及一些非常有经验的错误)也是:
if ( a = b )
dosomething();
在这种情况下,b被分配给a然后被评估为布尔表达式。有时程序员会故意这样做,但这是不好的形式。另一个阅读代码的程序员不会知道它是故意(很少)还是无意中(更有可能)。一个更好的结构将是:
if ( (a = b) == 0 ) // or !=
dosomething();
这里,b被分配给a,然后将结果与0进行比较。意图很清楚。 (有趣的是,我和C#程序员一起工作过,他们从来没有写过纯粹的C,也无法告诉你这是做什么的。)
答案 1 :(得分:5)
是“等于”操作符。
在上面的示例中,x
被赋予了相等性测试(y == z
)表达式的结果。因此,如果y
等于z
,则x
将设置为1
(true),否则为0
(false)。因为C(pre-C99)没有布尔类型,所以表达式求值为整数。
答案 2 :(得分:4)
平等。如果操作数相等则返回1,否则返回0.
答案 3 :(得分:2)
==表示“等于”。此运算符的优先级高于=(等于)运算符。等式x = y == z;将尝试将y == z的结果分配给变量x。在这种情况下为1。
答案 4 :(得分:1)
int main()
{
int x = 2, y = 6, z = 6;
x = y == z;
printf("%d", x);
}
让我们这样开始:
x = (6==6)
它要求6相当于6?:true
x = true,但由于x是int,x = 1 x的新值是1。
1
答案 5 :(得分:0)
这是说
X将等于true / 1或false / 0。
查看该行的另一种方法是:
x = ( is y equal to true? then true/1 or false/0 )
答案 6 :(得分:0)
==运算符用于平等.. 在这里以你的例子 如果y等于z则x将具有真值,否则x将为假
答案 7 :(得分:0)
这样想:
=意味着给出一些价值。
==表示检查它是否等于某个值。
例如
int val = 5; //val is 5
//= actually changes val to 3
val = 3;
//== Tests if val is 3 or not.
//note: it DOES NOT CHANGE the value of val.
val == 3;
int new_val = val == 3; //new_val will be 1, because the test is true
//the above statement is the same as
bool is_val_3 = false;
if( val == 3 )
is_val_3 = true;
int new_val;
new_val = is_val_3;
//putting it together,
val = new_val == 2; //sets val to 0. do you understand why now?