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

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

[复制链接]
发表于 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]
发表于 2006-12-11 22:25:40 | 显示全部楼层
y=z为真 x=1
第二个答案为0        先计算括号里面的  4=4为真 所以为1
当计算 x==1 因为定义过x=40 所以x!=1 所以为假 为0
所以第二题  x=0
 楼主| 发表于 2006-12-11 22:54:56 | 显示全部楼层
这些东西有时候还蛮麻烦啊 [s:8]
发表于 2006-12-11 23:11:53 | 显示全部楼层
如果为真 就是1
如果为假 就是0
发表于 2006-12-24 16:51:54 | 显示全部楼层
简单说,1和0在这里只是隐式转化为int类的boolen值.
其实==操作的返回值应该是boolen值true和false.
但是你用int类的变量接收,那么收到的就是转化为int的boolen值,第一个式子是真的,4等于4,所以结果是true,就是1.第二个式子是假的,40不等于1,所以结果是false,是0.
发表于 2006-12-24 20:58:33 | 显示全部楼层
晕,这是basic的语法么?
发表于 2007-1-16 23:05:04 | 显示全部楼层
应该算C的语法吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-11-6 20:14 , Processed in 0.013536 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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