无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4394|回复: 16
打印 上一主题 下一主题

[求助] 关于操作符“||“、“&&”和“!”的问题?

[复制链接]
跳转到指定楼层
1#
发表于 2011-12-3 21:56:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下复制的版主的chm帮助文档:


command 1 && command 2 || command 3 ! command 4

command 1 返回 真,那么 command 2 将执行,command 2 返回 假,那么 command 3将执行;command 4不执行  

command 1 返回 假,那么 command 2、 command 3都将不执行,command 4 将被执行



如果command 1 为真,command 2也为真,command 4会执行吗?
还有如果1为假,2和3都不执行,4却执行?
这些操作符还有优先等级吗?
如果只有“||”和“&&”,就从左到右1、2、3、4、5……判断到最后吗?但是加了!有怎么判断那个优先?
2#
发表于 2011-12-3 22:10:59 | 只看该作者
只要前面有任意一个组合执行失败就会转到 ! 后面去执行。

比如
command1 && command2 || command 3 ! command 4

如果command1为假时因为后面是&&所以失败会执行command4

如果1真,2也真。因为2后面是||还是失败执行command4

如果1真,2假,执行COMMAND3,command4无用。
回复

使用道具 举报

3#
发表于 2011-12-3 22:29:24 | 只看该作者

回复 #1 my9823 的帖子

有个简单的规律
1、对于!命令,!命令前必须至少1个(包含1个)&&或者||命令。存在多个命令的时候,前面命令结果失败的时候执行。如果一句命令存在多个!命令,请分段!命令按上面的解释理解。
2、对于只有&&和||的命令,很好理解。顺序执行。后面的命令自行与否取决于当前命令的返回值是否满足&&或者||的执行条件。
3、&&和||接收其他命令的返回值。!不接受。
回复

使用道具 举报

4#
 楼主| 发表于 2011-12-4 05:49:26 | 只看该作者
command x||command1 && command2 || command 3 ! command 4
是不是说如果command x真,后边就都不执行了;如果x真,1假后边是&&,2就不执行,后边呢?


对不起有点蒙了,看来我的语文学的不好,理解能力太差了!:D
回复

使用道具 举报

5#
发表于 2011-12-4 09:12:57 | 只看该作者

回复 #4 my9823 的帖子

X是真,执行4,结束

X是假,执行1
                     1是假,执行4,结束
                     1是真,执行2
                                                    2是真,执行4,结束
                                                    2是假,执行3,结束
回复

使用道具 举报

6#
 楼主| 发表于 2011-12-4 10:40:13 | 只看该作者
谢谢版主、chenall、稀饭哥!
回复

使用道具 举报

7#
发表于 2011-12-4 11:55:54 | 只看该作者
做个记号,学到了新东西
回复

使用道具 举报

8#
发表于 2011-12-4 13:22:43 | 只看该作者

回复 #5 sratlf 的帖子

嗯 学习 讲解的很好!
回复

使用道具 举报

9#
发表于 2011-12-4 14:20:20 | 只看该作者
我一见到这样的复杂语句就头痛,越看越是糊涂——我现在想做一个USB-HDD和(ud)启动同用一个菜单项去实现从第一硬盘启动,都不知道怎么写(换句话说,如果检测到是0x23或0x80启动的话,就将硬盘(hd1)交换到(hd0))。
回复

使用道具 举报

10#
发表于 2011-12-4 16:07:37 | 只看该作者
原帖由 sratlf 于 2011-12-4 09:12 发表
X是真,执行4,结束

X是假,执行1
                     1是假,执行4,结束
                     1是真,执行2
                                                    2是真,执行4,结束
            ...

收集资料,学习知识
回复

使用道具 举报

11#
发表于 2011-12-4 16:14:10 | 只看该作者
只要自己试验一下,很容易明白的说。。

另外可以把它理解成是C语言 IF ... else 的语法。
只有一点区别我们的else是对应前面所有的判断的,只有其中一个返回假就执行,而正规的C语言是

&& 理解成 不等于零
||  理解成  等于零
! 理解成 else


像下面的就很好理解了

当command1返回值非零的时候执行command2否则执行command3
command1 && command2 ! command3

command1 &&  就是(command1 != 0)

if (command1!=0)
   command2
else
  command3

下面
command1 || command2 ! command3

command1 || 相当于 if (command1 == 0)
if (command1 == 0)
   command2
else
   command3

以上是基础解理了就可以看下面的。

复杂一点儿的
cmd1 && cmd2 && cmd3 ! cmd4

这样理解
if (cmd1 != 0)
  if (cmd2 != 0)
    cmd3
else
   cmd4


cmd1 && cmd2 || cmd3 ! cmd4

if (cmd1)
  if (!cmd2)
    cmd3
else
   cmd4

要点: 判断的依据是 命令和后面的符号。即判断命令执行的返回值是否为0。

懂得编程的应该都很容易理解。
如果还是不理解,建议放弃吧,不要用这个命令语法。
回复

使用道具 举报

12#
发表于 2011-12-4 16:33:47 | 只看该作者
原帖由 chenall 于 2011-12-3 22:10 发表
只要前面有任意一个组合执行失败就会转到 ! 后面去执行。

比如
command1 && command2 || command 3 ! command 4

如果command1为假时因为后面是&&所以失败会执行command4

如果1真,2也真。因为2后面是||还是失败执行command4

如果1真,2假,执行COMMAND3,command4无用。


看了更糊涂,结合scralf的实例后,对于
command0 || command1 && command2 || command 3 ! command 4
只要command3没机会执行(不管结果),command4就执行就这么简单明了。
回复

使用道具 举报

13#
发表于 2011-12-4 16:38:21 | 只看该作者

回复 #12 快雪时晴 的帖子

Q:只要command3没机会执行(不管结果),command4就执行就这么简单明了。
这个说法错误。

最简单的理解如下。
只要“!”前面其中一个命令得不到运行就会转到“!”后面去执行。

[ 本帖最后由 chenall 于 2011-12-4 21:48 编辑 ]
回复

使用道具 举报

14#
发表于 2011-12-4 17:16:28 | 只看该作者
原帖由 chenall 于 2011-12-4 16:38 发表
Q:只要command3没机会执行(不管结果),command4就执行就这么简单明了。
这个说法错误。

最简单的理解如下。
除了!前面的那个命令外,只要前面其中一个命令得不到运行就会转到!后面去执行。



还是写这个!命令的人最懂!
我们都是写很多简单的测试代码来掌握!命令的。
回复

使用道具 举报

15#
发表于 2011-12-5 04:39:02 | 只看该作者
原帖由 chenall 于 2011-12-4 16:38 发表
Q:只要command3没机会执行(不管结果),command4就执行就这么简单明了。
这个说法错误。

最简单的理解如下。
只要“!”前面其中一个命令得不到运行就会转到“!”后面去执行。


这次对“!”的用法,我看懂了………………

[ 本帖最后由 xianglang 于 2011-12-5 04:42 编辑 ]
回复

使用道具 举报

16#
发表于 2011-12-5 16:42:34 | 只看该作者
原帖由 sratlf 于 2011-12-4 09:12 发表
X是真,执行4,结束

X是假,执行1
                     1是假,执行4,结束
                     1是真,执行2
                                                    2是真,执行4,结束
            ...

这个最让人容易懂~~
回复

使用道具 举报

17#
发表于 2011-12-23 14:15:56 | 只看该作者
学习了,终于理解了 ! 的意思
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-17 00:17

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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