我想知道这个表达式测试的内容:
if ((a=b)!=0)
是否相当于(if (a!=0))
?
提前感谢。
答案 0 :(得分:2)
当用作运算符时,=
都会将右侧的值分配给左侧的变量,并返回该变量的新值(例如,如果a
是整数值(a=3.4)
返回3)。所以这相当于:
a=b;
if(a!=0)
答案 1 :(得分:2)
Almost everything in C return values.An expression like `a=b` also returns value.
代码中发生了什么
if ((a=b)!=0)) // By the way what you posted wont compile...
是b的值被分配给a并且再次检查该值不等于0
的值
它类似于
a = b;
if(a!=0)
{
...
}
答案 2 :(得分:0)
如果a和b相等,那么如果条件不需要将其指定为a = b。在条件外指定a = b,然后检查是否为!= 0
答案 3 :(得分:0)
首先评估a = b,即b的值将在a。
中第二个操作的结果将用!= 0
进行评估(即表达式的结果是a的值。)
等于
if (a!=0)
如果你将b的值分配给比较之前的
b = a;
if (a!=0)
答案 4 :(得分:0)
您的表达式无效,有效的表达式会有一个较小的结束括号
if ((a=b)!=0)
此代码等同于if(b!= 0)。
答案 5 :(得分:0)
您的问题存在一些问题,例如,您在询问“表达式”
if ((a=b)!=0)
以及表达
(if (a!=0))
在C中,这些东西不是表达式。很容易,他们是错误。所以如果你在上下文中有这个代码会更好。但是,如果这些括号中的第二个括号很可能是错误的。
你的问题的另一个问题是你可能认为C有条件,如haskell,scheme,SML,closure等等。我不认为这是你正在谈论的问题,但如果是,那么你应该看看?:
运营商。
如果你问的是两个if语句中使用的条件表达式,那么它们就不相同了。执行(a=b)!=0
与执行a!=0
不同。第一个将b
的值分配给a
,并将新分配的a
值与0进行比较,以查看它们是否不同。第二个只是将a
的值与0进行比较,以查看它们是否有所不同,而不事先将其分配给b
。
答案 6 :(得分:-1)
if ((a=b))!=0)
其error
应该是
if ((a=b)!=0))
如果a = b = some same integer
然后
它会检查a
和b
是not zero
或:
你的意图可能是:
a=b;
if(a!=0)
答案 7 :(得分:-1)
这里b被分配给a。
如果分配成功,则表达式变为
if(1!= 0)
这是真的然后它进入if条件。