C代码片段解释
C code snippets explanation
我正在尝试将以下 C 代码片段转换为汇编代码,但问题是我什至无法理解这些简单的 C 代码。我认为它们是以不正常的方式写的。所以我不能转移到组装。请帮助我
a = (a >= c);
b = (c < d) || (b > d);
a = (a != d) && (b != c)
看看 a>=c
那么它 return 是真的。所以 a=1 否则 a=0。
现在在第二种情况下,如果 c<d
(c 小于 d )或 b>d
(b 大于 d),其中任何一个为真 b=1。如果两者都为假 b=0。
如果 a 不等于 d 且 b 不等于 c,则 a=1 否则为 false(0)。
A && B = 1 if A!=0 and B!=0
= 0 if A=0 or B=0 or (A=0 and B=0)
A || B = 1 if A!=0 or B!=0
= 0 if A=0 and B=0
Note: if (A && B)
and A is found to be 0 then B will not be checked.
if (A || B)
and A is found to be 1 then B will not be checked.
如果 B 是表达式,则不会按照上述信息执行。这叫做Short circuit evaluation
.
它们是布尔表达式,return当为真时值为 1。
(a >= c) return如果 a >= c 则为 1,否则为 0。
如果 a 和 b 都不为零,a && b 也会 return 1
诸如 a>=c
return 真 ( 1 ) 或假 ( 0 ) 之类的语句。
因此,在您的情况下,如果 a >= c
,a=(a>=c);
会将值 1 赋给 a
,否则,它会将值 0 赋给 a
。
这也可以读作
if( a >= c )
a = 1;
else
a = 0;
接下来是b=(c<d)||(b>d);
。由于我们有||
,如果两个条件return中的任何一个为真则b赋值1,否则赋值0。即如果( c < d )
或( b > d )
,b
将被赋值 1,如果两个条件 return 都为假,则 b
被赋值为 0 。
现在这类似于 if 语句
if( ( c < d ) || ( b > d ) )
b = 1;
else
b = 0;
而对于 a=(a!=d)&&(b!=c)
,两个条件都必须 return 为真,a
才能得到值 1。也就是说,( a != d )
和 ( b != c )
必须 return true 才能为 a
分配值 1。如果不满足这两个条件中的任何一个,则为 a
分配值 0。
这相当于
if ( ( a != d ) && ( b != c ) )
a = 1;
else
a = 0;
希望你现在明白了。 :)
我正在尝试将以下 C 代码片段转换为汇编代码,但问题是我什至无法理解这些简单的 C 代码。我认为它们是以不正常的方式写的。所以我不能转移到组装。请帮助我
a = (a >= c);
b = (c < d) || (b > d);
a = (a != d) && (b != c)
看看 a>=c
那么它 return 是真的。所以 a=1 否则 a=0。
现在在第二种情况下,如果 c<d
(c 小于 d )或 b>d
(b 大于 d),其中任何一个为真 b=1。如果两者都为假 b=0。
如果 a 不等于 d 且 b 不等于 c,则 a=1 否则为 false(0)。
A && B = 1 if A!=0 and B!=0
= 0 if A=0 or B=0 or (A=0 and B=0)
A || B = 1 if A!=0 or B!=0
= 0 if A=0 and B=0
Note:
if (A && B)
and A is found to be 0 then B will not be checked.if (A || B)
and A is found to be 1 then B will not be checked.
如果 B 是表达式,则不会按照上述信息执行。这叫做Short circuit evaluation
.
它们是布尔表达式,return当为真时值为 1。
(a >= c) return如果 a >= c 则为 1,否则为 0。
如果 a 和 b 都不为零,a && b 也会 return 1
诸如 a>=c
return 真 ( 1 ) 或假 ( 0 ) 之类的语句。
因此,在您的情况下,如果 a >= c
,a=(a>=c);
会将值 1 赋给 a
,否则,它会将值 0 赋给 a
。
这也可以读作
if( a >= c )
a = 1;
else
a = 0;
接下来是b=(c<d)||(b>d);
。由于我们有||
,如果两个条件return中的任何一个为真则b赋值1,否则赋值0。即如果( c < d )
或( b > d )
,b
将被赋值 1,如果两个条件 return 都为假,则 b
被赋值为 0 。
现在这类似于 if 语句
if( ( c < d ) || ( b > d ) )
b = 1;
else
b = 0;
而对于 a=(a!=d)&&(b!=c)
,两个条件都必须 return 为真,a
才能得到值 1。也就是说,( a != d )
和 ( b != c )
必须 return true 才能为 a
分配值 1。如果不满足这两个条件中的任何一个,则为 a
分配值 0。
这相当于
if ( ( a != d ) && ( b != c ) )
a = 1;
else
a = 0;
希望你现在明白了。 :)