“=”何时为赋值运算符,何时为比较运算符?

时间:2021-09-29 16:15:48

 VF 中的比较运算符和赋值运算符都是 “=”,有时表达式中会出现多个 “=”,不知道各是什么运算符该如何运算。比如下面这道题:

  如果 x = 3 , y = 5 ,执行下列运算后,能得到数值型结果的是 ( )
  A. ?x=y-2    B. x=y    c. y=x=2  d. x=y>x

 还有一个问题:
  字段类型 数值型、浮点型、整型都用 N 表示,用 create table命令建表时如何区分?

10 个解决方案

#1


1.答案為B
A﹕.t.
B:5
C:.f.
D:.t.
2.数值型用N、浮点型用F、整型用I
而不是数值型、浮点型、整型都用 N 表示

#2


谢谢小黑黑脸,数值型用N、浮点型用F、整型用I,对,应该是我的书上错了;但是前面那道选择题各个选项的值怎么求出来的?为什么要那样算呢?也许有些钻牛角尖,可这是课本上的习题,没办法。

#3


1、答案当然是B
因为:
A:显示X是否等于Y-2,答案是逻辑型。
B:把Y的值覆给X,答案是数值型。
C:把X是否等于2的值覆给Y,答案是逻辑型。
D:把Y是否大于X的值覆给X,答案是逻辑型。

#4


多谢,但是:
为什么 ?x=y 就是判断x是否等于y,然后显示结果,x=y 就是将y 的值赋给x呢?

#5


1.vfp的表达式 是由 命令.变量.操作符组成.

2.一个命令行至少有一个命令.

3.分析这样的语句要选择命令语句,再找操作符

x=y   ............这里的=是命令..... x.y是变量  把Y的值赋值 给X
? x=y-2 ..........这里的命令是? ....=是运算符......把x是否等于y-2的值显示出来

? x=y  ...........这里的?是命令....=是运算符.....x..y是变量 显示 x=y 是真还是假


(x=4,y=5)
x=y=2 ............第一个=是命令....第二个=运算符  把y=2是否为真的结果赋值给X

x=y>2 ............=是命令 .........>是运算符 把y>2是否为真的结果赋值给X

当你在命令行里找到命令时...对于'='你就知道它的作用是命令(赋值)还是运算符(比较)

再如
x=4
y=5
? x=y=2  会显示错误,这是因为? 是命令后面的=都是比较.没有括号所以按顺序运算
         先运算x=y 为.f.  然后运算.f.=2 因为运算符二两类型不一致,所以提示错误
改成
x=4
y=5
? x=y=.f. 就会显示.t.  命令是?2个=都是运算符. x=y运算结果是.f. .f.=.f.运算结果为.T.

#6


多谢多谢!还想再问问:
vf 选择命令语句的规则又是怎样的呢?比如 x=y=2中,为什么第一个 = 作为命令呢?

#7



= 做为赋值作用时,它的左边必须是一个变量或数组或对象的一个属性
       在 X=Y=2 表达式中 第二个'='做不了赋值作用的命令,因为=前的'x=y'是一个表达式而不是一个变量

#8


上面 zsjiaming(路口就在不远处) 说的很清楚了, 

第一个=是命令

#9


非常感谢 zsjiaming(路口就在不远处) 和 apple_8180(十豆三),二位不光水平高,人品也好。受教了!

#10


想起有张MSDN的盘,查了一下,似乎 zsjiaming(路口就在不远处) 的分析有些不太准确:

a = 6  中的等号不是命令,而是一个操作符,这样的话 x=y=2 的计算规则似乎就应该和VF的表达式解析(编译器设计?)有关了,对不?

原文是这样的:

= Command
See Also

Evaluates one or more expressions.

Syntax

= Expression1 [, Expression2 ...]

Arguments

Expression1 [, Expression2 ...]

Specifies the expression or expressions that the = command evaluates.

Remarks

The = command evaluates one or more expressions, Expression1, Expression2 ..., and discards the return values. This option is particularly useful when a Visual FoxPro function or a user-defined function has a desired effect, but there is no need to assign the function's return value to a variable, array element, or field.

For example, to turn insert mode on, you can issue the following command:

= INSMODE(.T.)

INSMODE normally returns a true (.T.) or false (.F.) value. In the example above, the function is executed but the return value is discarded.

If only one expression (Expression1) is included, the equal sign is optional.

Note There are two unrelated uses for the equal sign (=). It can be used as an operator in logical expressions to make a comparison, or to assign values to variables and array elements. In these two cases, the equal sign (=) is an operator and not a command. See Relational Operators for more information about using the equal sign (=) as an operator in logical expressions. See STORE for more information about using the equal sign (=) to assign values to variables and array elements.

#1


1.答案為B
A﹕.t.
B:5
C:.f.
D:.t.
2.数值型用N、浮点型用F、整型用I
而不是数值型、浮点型、整型都用 N 表示

#2


谢谢小黑黑脸,数值型用N、浮点型用F、整型用I,对,应该是我的书上错了;但是前面那道选择题各个选项的值怎么求出来的?为什么要那样算呢?也许有些钻牛角尖,可这是课本上的习题,没办法。

#3


1、答案当然是B
因为:
A:显示X是否等于Y-2,答案是逻辑型。
B:把Y的值覆给X,答案是数值型。
C:把X是否等于2的值覆给Y,答案是逻辑型。
D:把Y是否大于X的值覆给X,答案是逻辑型。

#4


多谢,但是:
为什么 ?x=y 就是判断x是否等于y,然后显示结果,x=y 就是将y 的值赋给x呢?

#5


1.vfp的表达式 是由 命令.变量.操作符组成.

2.一个命令行至少有一个命令.

3.分析这样的语句要选择命令语句,再找操作符

x=y   ............这里的=是命令..... x.y是变量  把Y的值赋值 给X
? x=y-2 ..........这里的命令是? ....=是运算符......把x是否等于y-2的值显示出来

? x=y  ...........这里的?是命令....=是运算符.....x..y是变量 显示 x=y 是真还是假


(x=4,y=5)
x=y=2 ............第一个=是命令....第二个=运算符  把y=2是否为真的结果赋值给X

x=y>2 ............=是命令 .........>是运算符 把y>2是否为真的结果赋值给X

当你在命令行里找到命令时...对于'='你就知道它的作用是命令(赋值)还是运算符(比较)

再如
x=4
y=5
? x=y=2  会显示错误,这是因为? 是命令后面的=都是比较.没有括号所以按顺序运算
         先运算x=y 为.f.  然后运算.f.=2 因为运算符二两类型不一致,所以提示错误
改成
x=4
y=5
? x=y=.f. 就会显示.t.  命令是?2个=都是运算符. x=y运算结果是.f. .f.=.f.运算结果为.T.

#6


多谢多谢!还想再问问:
vf 选择命令语句的规则又是怎样的呢?比如 x=y=2中,为什么第一个 = 作为命令呢?

#7



= 做为赋值作用时,它的左边必须是一个变量或数组或对象的一个属性
       在 X=Y=2 表达式中 第二个'='做不了赋值作用的命令,因为=前的'x=y'是一个表达式而不是一个变量

#8


上面 zsjiaming(路口就在不远处) 说的很清楚了, 

第一个=是命令

#9


非常感谢 zsjiaming(路口就在不远处) 和 apple_8180(十豆三),二位不光水平高,人品也好。受教了!

#10


想起有张MSDN的盘,查了一下,似乎 zsjiaming(路口就在不远处) 的分析有些不太准确:

a = 6  中的等号不是命令,而是一个操作符,这样的话 x=y=2 的计算规则似乎就应该和VF的表达式解析(编译器设计?)有关了,对不?

原文是这样的:

= Command
See Also

Evaluates one or more expressions.

Syntax

= Expression1 [, Expression2 ...]

Arguments

Expression1 [, Expression2 ...]

Specifies the expression or expressions that the = command evaluates.

Remarks

The = command evaluates one or more expressions, Expression1, Expression2 ..., and discards the return values. This option is particularly useful when a Visual FoxPro function or a user-defined function has a desired effect, but there is no need to assign the function's return value to a variable, array element, or field.

For example, to turn insert mode on, you can issue the following command:

= INSMODE(.T.)

INSMODE normally returns a true (.T.) or false (.F.) value. In the example above, the function is executed but the return value is discarded.

If only one expression (Expression1) is included, the equal sign is optional.

Note There are two unrelated uses for the equal sign (=). It can be used as an operator in logical expressions to make a comparison, or to assign values to variables and array elements. In these two cases, the equal sign (=) is an operator and not a command. See Relational Operators for more information about using the equal sign (=) as an operator in logical expressions. See STORE for more information about using the equal sign (=) to assign values to variables and array elements.