免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3306 | 回复: 12
打印 上一主题 下一主题

or 和 || 有区别吗 ? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-02 12:05 |只看该作者 |倒序浏览
有什么比较大的区别不? 谢谢

我碰到了如下的情景:
  1. 1. open F, ">not_exist_file" or die($!);
复制代码
  1. 2 .open F, ">not_exist_file" || die($!);
复制代码
1成功了,2却不行,怎么回事呢?

论坛徽章:
0
2 [报告]
发表于 2010-02-02 12:11 |只看该作者
本帖最后由 toniz 于 2010-02-02 12:33 编辑

回复 1# Pro_sky


    应该是没区别的。查查你报错是什么原因吧。

   不过赋值的时候,需要注意下符号的优先级。赋值的优先级比 || 低  比OR 高。

论坛徽章:
0
3 [报告]
发表于 2010-02-02 12:20 |只看该作者
优先级

论坛徽章:
0
4 [报告]
发表于 2010-02-02 13:04 |只看该作者
or 优先级低于 ,
|| 优先级高于 ,
因此:
open F, ">not_exist_file" or die($!); ===》 (open F, ">not_exist_file") or die($!);
而:
open F, ">not_exist_file" || die($!); ===》open F, ( ">not_exist_file" || die($!) );

论坛徽章:
0
5 [报告]
发表于 2010-02-02 16:13 |只看该作者
回复 4# dugu072_cu

   查了下确实逗号的优先级刚好在两个中间。
    那就奇怪了  我用的时候居然没问题  我倒 !
  1. [etl@dmtest _xwj]$ cat a.txt
  2. yyy
  3. [etl@dmtest _xwj]$ cat ttt.pl
  4. use strict;
  5. open F, "<a.txt" || die($!);
  6. while(<F>){
  7.         print ;
  8. }
  9. [etl@dmtest _xwj]$ perl ttt.pl
  10. yyy
复制代码

论坛徽章:
0
6 [报告]
发表于 2010-02-02 16:22 |只看该作者
回复 4# dugu072_cu


    我觉得这里的逗号应该是分割符,而不是逗号操作符。所以两句应该是一样的。

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
7 [报告]
发表于 2010-02-02 16:34 |只看该作者
  1. open FH, "not_exist_file" or die($!);
  2. while(<FH>)
  3. {
  4.         print ;       
  5. }
复制代码
无此文件或目录 at .//yy.pl line 22.
  1. open FH, "not_exist_file" || die($!);
  2. while(<FH>)
  3. {
  4.         print ;       
  5. }
复制代码
readline() on closed filehandle FH at .//yy.pl line 23.

论坛徽章:
0
8 [报告]
发表于 2010-02-02 16:36 |只看该作者
open( F, ">not_exist_file") or die($!);
open(F, ">not_exist_file" )|| die($!);
结果在我这里是一致的,最好加个括号

论坛徽章:
0
9 [报告]
发表于 2010-02-02 16:39 |只看该作者
回复 7# yybmsrs


    你在代码的同个目录下,新建一个名字叫“not_exist_file”的文件  随便填几行进去 再跑跑。

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
10 [报告]
发表于 2010-02-02 16:41 |只看该作者
回复 9# toniz


这种情况没有区别,都不会错。

但是读的话可以看出差别。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP