学习x <> y的用法.

ning1958 2010-07-04 10:33:15
http://topic.csdn.net/u/20100703/10/95ca83c4-54a2-4ebc-9291-86faad828d99.html
在这个帖子,感谢vbman2003提供了(x <> y)的用法.
有关这个知识的应用需要进一步消化理解.


Dim nn As Double
Dim x As Double
Dim y As Long

nn = rnd * 100
x = nn / 5
Select Case x 'nn<=10
Case Is <= 2
nn = 10
Case 2 To 6 'nn=10~30
y = nn \ 5
nn = y * 5 - (x <> y) * 5 '非5倍数,整除5后再加5
Case Else: 'nn>30
x = nn / 10
y = nn \ 10
nn = y * 10 - (x <> y) * 10 ''非10倍数,整除10后再加10
End Select

此程序解决的问题,"自定义数据进位的规则运算",请vbman2003大侠看一这个定义是否准确.谢谢

假设输入数据nn=14.5
y:--- 2
y * 5:-- 10
(x <> y) * 5:-- -5

目标需求成立
nn = y * 5 - (x <> y) * 5 结果为 15

问题提出

(x <> y) * 5 的结果为 -5,这个知识点需要从哪里获得.谢谢

...全文
236 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbman2003 2010-07-05
  • 打赏
  • 举报
回复
还有,你可以按F8单位步调试,这样用鼠标移动到相应的变量上,就可以看到变量变化...

当nn=14.5,
x= 14.5 / 5 结果为 2.9 在 case 2 to 6 这个范围中...
y= 14.5 \ 5 整除的结果为2
那么在表达式nn = y * 5 - (x <> y) * 5中,x <> y成立,返回-1,所以(x <> y) * 5得-5
结果就是y=2*5 + 5 为15....


vbman2003 2010-07-05
  • 打赏
  • 举报
回复
x<>y 是比较一个表达式,返回的数值类型为boolean, 如果其成立返回true,不成立返回false...Boolean转换为其他的数据类型时,False成为0,而True成为-1。

nn = y * 5 - (x <> y) * 5 是个运算表达式,其中(x <> y)的比较结果隐式的转换为了-1或0....
ning1958 2010-07-05
  • 打赏
  • 举报
回复
谢谢,楼上的各位的回复.
1 http://topic.csdn.net/u/20100703/10/95ca83c4-54a2-4ebc-9291-86faad828d99.html的题目是<数据按档位进行靠位运算>,自己感觉不但绕口,还不好理解.
现在改为<自定义数据进位的规则>是否可行,还有没有更好的定义.
2 (x <> y) * 5 

if x <> y then

else
(x <>) * 5 = -1 * 5 ' 是不是这种理解??
end if


chinaboyzyq 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 ning1958 的回复:]
(x <> y) * 5 的结果为 -5,这个知识点需要从哪里获得.谢谢
[/Quote]
(x <> y) 布尔值非0(true)即-1(false)
zfl2k 2010-07-05
  • 打赏
  • 举报
回复
你把x<>y换成iif(x=y,0,-1)这样就好理解多了
x<>y=true=-1或者false=0,就是这样的
兔子-顾问 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 laviewpbt 的回复:]
引用 7 楼 wuyazhe 的回复:

(x <> y) * 5 的结果为 -5,这个知识点需要从哪里获得.谢谢
------------------------------------------------------
尽量不要这样写。这是很没有可读性的代码。是大忌。



这是个很好的写法,特别是对于大量的循环中,为了提高计算效率,
分支判断语句会到底速度下降。
[/Quote]

如果你阅读一个大型软件,通篇此类代码。你会很郁闷的。可读性对小的软件作坊或个人开发无所谓。但大的项目,为了这一丁点的效率而牺牲可读性带来的隐患更大,可读性低就会带来维护成本增加,维护难度增加,以及维护的时候为了修改一个问题导致另一个问题的可能增加。

laviewpbt 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wuyazhe 的回复:]

(x <> y) * 5 的结果为 -5,这个知识点需要从哪里获得.谢谢
------------------------------------------------------
尽量不要这样写。这是很没有可读性的代码。是大忌。
[/Quote]


这是个很好的写法,特别是对于大量的循环中,为了提高计算效率,
分支判断语句会到底速度下降。
兔子-顾问 2010-07-05
  • 打赏
  • 举报
回复
(x <> y) * 5 的结果为 -5,这个知识点需要从哪里获得.谢谢
------------------------------------------------------
尽量不要这样写。这是很没有可读性的代码。是大忌。
ning1958 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 vbman2003 的回复:]
还有,你可以按F8单位步调试,这样用鼠标移动到相应的变量上,就可以看到变量变化...

当nn=14.5,
x= 14.5 / 5 结果为 2.9 在 case 2 to 6 这个范围中...
y= 14.5 \ 5 整除的结果为2
那么在表达式nn = y * 5 - (x <> y) * 5中,x <> y成立,返回-1,所以(x <> y) * 5得-5
结果就是y=2*5 + ……
[/Quote]

谢谢,大侠对于这个知识点的指导.

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧