LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1216|回复: 4

关于逻辑或运算的疑问

[复制链接]
发表于 2008-12-2 20:41:09 | 显示全部楼层 |阅读模式
下面的命令序列:

$ ((N=10,Z=0))
$ echo $((N || ((Z+=1)) ))
1
$ echo $Z
0

最后结果$Z为0,这说明Z+=1没有执行。但N是非零值啊,它应该表示false。而对于逻辑或来说,第一个运算量如果是false的话,就应该计算第二个运算量的。
发表于 2008-12-2 21:14:02 | 显示全部楼层
会不会不支持在逻辑运算里执行算术运算啊!这可不是C语言。
我也新手,只是自己想到的,没求证过。
回复 支持 反对

使用道具 举报

发表于 2008-12-3 09:08:18 | 显示全部楼层
$ echo $((N || ((Z+=1)) ))
测试的是N有没有赋值或是否为???
回复 支持 反对

使用道具 举报

发表于 2008-12-3 10:23:02 | 显示全部楼层
Post by Parmenides;1918042
但N是非零值啊,它应该表示false。
受不了...
谁告诉你非零值表示false的?搞清楚表达式的值和子进程的返回状态根本不是同一回事儿。shell中任何表达式的真假和在C中都是一样的语义。

http://www.linuxsir.cn/bbs/showthread.php?p=1905896#post1905896
回复 支持 反对

使用道具 举报

发表于 2008-12-4 10:25:58 | 显示全部楼层
Post by Jockey;1918236
受不了...
谁告诉你非零值表示false的?搞清楚表达式的值和子进程的返回状态根本不是同一回事儿。shell中任何表达式的真假和在C中都是一样的语义。

http://www.linuxsir.cn/bbs/showthread.php?p=1905896#post1905896


哦,是我没搞清除概念。谢谢了
回复 支持 反对

使用道具 举报

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

本版积分规则

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