免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
21 [报告]
发表于 2008-10-10 23:30 |只看该作者
原帖由 dodolo0k 于 2008-10-10 23:09 发表


比如:

if(a==true) {
printf("XXXXXXXX");
}

我可以写成
a==true || printf("XXXXXXXX");


C中的实际执行结果不是你说的那样吧,a==true || printf("XXXXXXXX");

按照"逻辑或"的执行顺序,如果a为true,后面的printf就不走,如果a为false,后面的printf才会执行。

和你想要的结果相反。

论坛徽章:
0
22 [报告]
发表于 2008-10-10 23:36 |只看该作者
原帖由 nicozhou 于 2008-10-10 23:30 发表


C中的实际执行结果不是你说的那样吧,a==true || printf("XXXXXXXX");

按照"逻辑或"的执行顺序,如果a为true,后面的printf就不走,如果a为false,后面的printf才会执行。

和你想要的结果相反。

不好意思,现在把它纠正过来好了,就你说的这个样子,我原意就你说的这意思


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

===>
a==true || printf("a == false");

论坛徽章:
0
23 [报告]
发表于 2008-10-10 23:39 |只看该作者
原帖由 dodolo0k 于 2008-10-10 23:36 发表

不好意思,现在把它纠正过来好了,就你说的这个样子,我原意就你说的这意思


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

===>
a==true || printf("a == false";



日火,这是啥啊,实际应用?? 没这样写过

C语言中写这样的代码不是找骂吗?

论坛徽章:
0
24 [报告]
发表于 2008-10-10 23:41 |只看该作者
原帖由 nicozhou 于 2008-10-10 23:39 发表



日火,这是啥啊,实际应用?? 没这样写过

C语言中写这样的代码不是找骂吗?

我也只是用上面的代码表达下意思嘛!
这种写法没有问题的哟!

就前几天看Perl教程,然后想到这个,想到为什么没见到过这样写

[ 本帖最后由 dodolo0k 于 2008-10-10 23:43 编辑 ]

论坛徽章:
0
25 [报告]
发表于 2008-10-10 23:46 |只看该作者
原帖由 dodolo0k 于 2008-10-10 23:41 发表

我也只是用上面的代码表达下意思嘛!
这种写法没有问题的哟!

就前几天看Perl教程,然后想到这个,想到为什么没见到过这样写

达到目的就可以了
没有什么 xx语言不能xx样写的说法

论坛徽章:
0
26 [报告]
发表于 2008-10-10 23:47 |只看该作者
原帖由 nicozhou 于 2008-10-10 23:39 发表



日火,这是啥啊,实际应用?? 没这样写过

C语言中写这样的代码不是找骂吗?

师兄被我搞晕了哈,
我就是想明白为什么c中不这样写?
不这样写就有他的一些理由,理由是什么

很晚了,休息了,感谢师兄配我聊了这么久,谢谢!

论坛徽章:
0
27 [报告]
发表于 2008-10-11 03:44 |只看该作者
原帖由 dodolo0k 于 2008-10-10 23:47 发表

师兄被我搞晕了哈,
我就是想明白为什么c中不这样写?
不这样写就有他的一些理由,理由是什么

很晚了,休息了,感谢师兄配我聊了这么久,谢谢!


我还是之前的观点,能写不能写取决于C能不能认,只要C的编译器能认,这样写当然没错。

但是语法上没错的东西,不一定有实际意义。就像:

if(A>1)
{
       do something;
}

如果编译器能检测到A不可能>0的话,有的编译器是不会出Warning的,但是你用pclint试试看。

另外,C的语法要比perl严谨得多,容易引起歧义的、难于理解的书写,在C中最好不要出现,非但不能显示出代码作者水平有多高,反而让人看了半天,不知道作者的意图。

我自己的观点罢了。

论坛徽章:
0
28 [报告]
发表于 2008-10-11 12:33 |只看该作者
原帖由 dodolo0k 于 2008-10-10 23:36 发表

不好意思,现在把它纠正过来好了,就你说的这个样子,我原意就你说的这意思


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

===>
a==true || printf("a == false");

C有这种写法的, 包括&&也有类似写法.
a==true || printf("a == false")

if ( a != true )  printf("a == false");
语法上没什么不可以,只是编程规范不建议,因为不符合易读性的原则.

论坛徽章:
0
29 [报告]
发表于 2008-10-11 15:47 |只看该作者
感觉这个是一种语言固有的习惯问题吧。。。

论坛徽章:
0
30 [报告]
发表于 2008-10-12 17:10 |只看该作者
发现一个小问题 if(a==true) {printf("a==true");} 应该是 a==ture && printf("a==ture"); 不这么用可以是便于以后修改和逻辑的清晰吧,必竟是一群人在合作,个人认为
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP