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

 我来答
windclsoe
2013-01-27
知道答主
回答量:27
采纳率:0%
帮助的人:20.8万
展开全部
应该是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比较
懂了记得给分哦^_^
仰宛秋021
2013-01-27 · TA获得超过158个赞
知道小有建树答主
回答量:152
采纳率:0%
帮助的人:133万
展开全部
你说的是判断语句x==0吧?分析如下:
!x:如果x非0,那么!x=0,如果x为0,那么!x=1
x==0:如果x非0,那么x==0判断为假,值为0,如果x=0,那么x==0为真,值为1
由上可知,两种表示法对x的判断效果是一样的,即等价
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
earthweiyc
2013-01-27
知道答主
回答量:21
采纳率:0%
帮助的人:17.2万
展开全部
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 非零结果自己分析

所以得到两个在逻辑判断上等价
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ee1d01f
2013-01-27 · 贡献了超过140个回答
知道答主
回答量:140
采纳率:0%
帮助的人:51.2万
展开全部
等于0代表假,非零代表真
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式