幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3102|回复: 6

[通用编程] 问个计算的问题

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 2006-12-11 22:10:59 | 显示全部楼层 |阅读模式
程序如下:
main()
{
int x=40,y=4,z=4;
x=y==z;printf("%d\n",x);
x=x==(y=z);printf("%d\n",x);
}

为什么答案分别是1,0呢?赋值勤运算是自右向左,先不管Y跟Z本来它们都是等值的,但为什么最后
X的值是1呢?下面的零就更令我不解呢。请指教指教! [s:8]
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

30

主题

409

帖子

4699

积分

⑥精研

积分
4699
发表于 2006-12-11 22:25:40 | 显示全部楼层
y=z为真 x=1
第二个答案为0        先计算括号里面的  4=4为真 所以为1
当计算 x==1 因为定义过x=40 所以x!=1 所以为假 为0
所以第二题  x=0
回复 支持 反对

使用道具 举报

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
 楼主| 发表于 2006-12-11 22:54:56 | 显示全部楼层
这些东西有时候还蛮麻烦啊 [s:8]
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复 支持 反对

使用道具 举报

30

主题

409

帖子

4699

积分

⑥精研

积分
4699
发表于 2006-12-11 23:11:53 | 显示全部楼层
如果为真 就是1
如果为假 就是0
回复 支持 反对

使用道具 举报

0

主题

2

帖子

24

积分

②入门

积分
24
发表于 2006-12-24 16:51:54 | 显示全部楼层
简单说,1和0在这里只是隐式转化为int类的boolen值.
其实==操作的返回值应该是boolen值true和false.
但是你用int类的变量接收,那么收到的就是转化为int的boolen值,第一个式子是真的,4等于4,所以结果是true,就是1.第二个式子是假的,40不等于1,所以结果是false,是0.
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2006-12-24 20:58:33 | 显示全部楼层
晕,这是basic的语法么?
え~え~お!!!
回复 支持 反对

使用道具 举报

10

主题

97

帖子

1035

积分

⑥精研

积分
1035
发表于 2007-1-16 23:05:04 | 显示全部楼层
应该算C的语法吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-3-29 14:34 , Processed in 0.038084 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表