指令在C中返回什么?

时间:2014-01-03 06:13:27

标签: c

我想知道这个表达式测试的内容:

if ((a=b)!=0)

是否相当于(if (a!=0))

提前感谢。

8 个答案:

答案 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)!= 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

然后

它会检查abnot zero

或:

你的意图可能是:

a=b;
if(a!=0)

答案 7 :(得分:-1)

这里b被分配给a。

如果分配成功,则表达式变为

if(1!= 0)

这是真的然后它进入if条件。