设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 1332|回复: 11
打印 上一主题 下一主题

[与其它组件] 【讨论】 考考新手,老鸟勿进!

[复制链接]
跳转到指定楼层
1#
发表于 2005-10-8 07:56:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
如下代码:(a,b值未知)

If a Then Debug.Print "ok"

If b Then Debug.Print "ok"

If Not (a And b) Then Debug.Print "ok"

运行结果可能输出三行"ok"吗?

[此贴子已经被作者于2005-10-8 0:10:01编辑过]

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
12#
发表于 2005-10-8 20:23:00 | 只看该作者
“均为True不可以”

已试验![em04]

[此贴子已经被作者于2005-10-8 12:23:31编辑过]

11#
 楼主| 发表于 2005-10-8 20:17:00 | 只看该作者
以下是引用gaoqiwen在2005-10-8 12:13:00的发言:



看总版主的代码,主要a,b为True或非零的数都可以输出3个ok!

因为IF...THEN...END把非零的数都看作TRUE。



均为True不可以
10#
发表于 2005-10-8 20:16:00 | 只看该作者
以下是引用wuaza在2005-10-8 10:17:00的发言:

不可以,反证法。

如果可以输出三个“ok”,那么a=true,b=true.

Not (a And b)=false

第三行就不可能输出“ok”了,所以假设不成立。

难道a,b值在debug之间会变化?我也讲不清楚了。



已试验!

[此贴子已经被作者于2005-10-8 12:24:10编辑过]

9#
发表于 2005-10-8 20:13:00 | 只看该作者
看总版主的代码,主要a,b为True或非零的数都可以输出3个ok!因为IF...THEN...END把非零的数都看作TRUE。
8#
 楼主| 发表于 2005-10-8 20:05:00 | 只看该作者
答案是可以。VB和C不同,C中有独立的逻辑运算符和位运算符,而VB中却合并在了一起,这样的做法确实有其优点,但是弊端也是很明显的,那就是你在使用的时候要非常非常注意。这道题目就是提醒大家要注意这一点。我们经常喜欢这样写:If bolCondition Then但是实际上这样的写法很不安全,如果bolCondition是Boolean类型,那么这样写法没问题,但是如果是其他类型,那么这样的写法就很有问题了,比较安全的写法是:If bolCondition<>False Then
7#
发表于 2005-10-8 19:30:00 | 只看该作者
可以!a,b的数据类型不同即可!看例

Function c()

Dim a As Double

Dim b As Integer

a = True

b = 1

If a Then Debug.Print "1ok"

If b Then Debug.Print "2ok"

If Not (a And b) Then Debug.Print "3ok"End Function

6#
发表于 2005-10-8 18:55:00 | 只看该作者
不要局限于 true 和 false
5#
发表于 2005-10-8 18:17:00 | 只看该作者
不可以,反证法。

如果可以输出三个“ok”,那么a=true,b=true.

Not (a And b)=false

第三行就不可能输出“ok”了,所以假设不成立。



难道a,b值在debug之间会变化?我也讲不清楚了。

[此贴子已经被作者于2005-10-8 10:30:45编辑过]

4#
发表于 2005-10-8 16:41:00 | 只看该作者
当然可以
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-11 06:20 , Processed in 0.096021 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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