若x为int类型,请写出与!x等价的C语言表达式(x=0)?,为什么x=0?

如题所述

!即为非的意思,就是如果x
=
真,那么!x
就为假,反过来若
x
=
假,则!x为真。
而在c
语言中表达式0为假,不是0的全为真,所以对应的关系表达式为
x
==
0;
即只有当x
==
0时才为真(对应等式成立),其余均为假(对应等式不成立)
楼下的,关系表达式只有六种:
>
,
<
,
>
=
,
<
=
,
!=
,
=
=
你用的是三目运算符(条件运算符,不是条件表达式)。。。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-01-14
C里有隐式转换,但x为int,是可以当成bool值使用,会自动转换。规律是:当x=0时
为false
x为非零值,则为true
分析一下,这个语句
x==0
从int角度分析,如果x为0
则结果
true
!x
这个表达式可以写成!((bool)x)x先转换为bool值,x为0,套用bool转换规律,即为false,而!(false)即为true
非零结果自己分析
所以得到两个在逻辑判断上等价
第2个回答  2019-11-29
你说的是判断语句x==0吧?分析如下:
!x:如果x非0,那么!x=0,如果x为0,那么!x=1
x==0:如果x非0,那么x==0判断为假,值为0,如果x=0,那么x==0为真,值为1
由上可知,两种表示法对x的判断效果是一样的,即等价
第3个回答  2019-11-26
应该是x==0
!x做的其实就是与0比较,看下面的代码
int
a,b=1;
a=!b;
//a=0
翻译成汇编代码:
movl
$1,
-8(%ebp)
#设置b=1
cmpl
$0,
-8(%ebp)
#b与0比较
sete
%al
#若b=0则产生中间变量1否则产生0
movzbl
%al,
%eax
#和上面一句一起产生作用呢
从上面汇编代码可以看出!b其实就是和0比较
懂了记得给分哦^_^

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网