免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123456
最近访问板块 发新帖
楼主: dodolo0k
打印 上一主题 下一主题

[C] 请教C编码问题 [复制链接]

论坛徽章:
0
51 [报告]
发表于 2008-10-20 15:06 |只看该作者
原帖由 dodolo0k 于 2008-10-10 22:32 发表
perl中有如下写法:(a == 1)|| printf("XXXXXXXXXXXX";

想问下C代码中怎么没有碰见过如上类似的写法?
该写法在C语法上来讲应该是对的。


比如:
if (a == true) {
     printf("a==ture";
}

...



if (a == true) {
     printf("a==ture";
}
跟if (a == true||printf("a==ture" {
     
}

不是一个东西好吧,也不是副作用的问题,是执行的顺序的问题,前者如果a == true成立就打印,但是后者如果不成立才打印,是因为,逻辑或操作是先检查左边的如果是1,则后面的不执行,如果不是1,后面的才执行,比如我们下面的两个程序:
void main(){
        int a = 1;
        if (a == true||printf("a==ture") {

        }
}
void main(){
        int a = 0;
        if (a == true||printf("a==ture") {

        }
}


就是两个不同的输出结果!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP