主题:=是等号还是赋值号?
栀子花
[专家分:0] 发布于 2005-09-20 13:17:00
c=b=a
print c
end
结果是-1
请高手解释一下?
按qb的规定,这两个语句语法对吗?
1.a>b=2
2.a=b<2
回复列表 (共4个回复)
沙发
ryowu [专家分:6470] 发布于 2005-09-20 17:59:00
c=b=a这种东西要看编译器是左结合还是右结合编译,讨论它没什么意义
板凳
moz [专家分:37620] 发布于 2005-09-20 18:07:00
我记得曾经有一个高人说过:
“老师说了,加多几个括号肯定不会有错”
是不是你说的?
3 楼
栀子花 [专家分:0] 发布于 2005-09-20 18:16:00
这是学生书里的一道题目,我觉得都对,但答案只有一个
4 楼
moz [专家分:37620] 发布于 2005-09-20 21:17:00
如果是赋值语句的话,比如:
c=b=a=e
这个式子中,第一个等号是赋值符号,之后的等号是判断大小关系的比较运算符号
之后的比较运算符号的运算顺序是从左到右比较的
先比较b,a 得值再与e比较 得值赋予c
举例: c=1=1=1
相当于 c=((1=1)=1)
c=(-1=1)
c=0
如果不是赋值语句,只是一个表达式,
也是就相当于上例中赋值等号后面的表达式一样,
从左到右的顺序去比较判断大小关系而已。
如:
print 1>0>-0.5
从左到右去做比较运算,得 -1>-0.5 得 0 假值。
其实ryowu说得对,这个需要看具体的编译器的运算顺序方向的
特别是C编译器,不同的编译器的差别就表现在这里了
但对QB编译器来说,一般都是从左到右的了。
我来回复