QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: boyxsh

《高质量C++/C编程指南》才发现的感觉很棒,和拿来大家分享

[复制链接]
发表于 2005-6-9 17:34:49 | 显示全部楼层
to: wsm

"何况:这里写用if(flag) 那如果在我的系统里就是flag=0是真 =-1是假呢? 开发环境何止千种?"
---------->即使真的存在这种情况,用if(flag)也是正确的,理由如下:

比如:
[code:1]
if(flag)
    run1();
else
    run2();
[/code:1]
假如 0 - TRUE , -1 - FALSE

flag = 0 时 , if(0) = TRUE , 执行 run1()
flag = -1时 , if(-1) = FALSE ,执行run2()

不过,如果改成if(flag == TRUE)时也是正确的, 哈哈

##############################################
对于前一个帖子的补充:

假设有一个函数 int check(); flag = check();
失败返回 0 , 根据函数内部状态 , 成功可能返回 1 , 2 ,3 等情况.
这时如果要判断成功执行了,一般写成 if(flag) , 但是如果if(flag == TRUE)写的习惯了,就可能出现用if(flag == TRUE)来判断的情况.

没有写过 if( i = 1)这样的错误的人,估计是没写过几行代码的人.程序员也是人,也会写出低级错误的代码.

所以良好的编码习惯还是有必要的.
回复

使用道具 举报

发表于 2005-6-9 19:25:19 | 显示全部楼层
C 语言只有“0” 和“非 0”,没有 TRUE 和 FALSE。这两个大写字母组成的标识符纯粹是 Win32 API 中多此一举的愚蠢设计。
假如 0 - TRUE , -1 - FALSE

那么,除了 0 和 -1 之外的值算什么?你没有一个“只能表示 0 或 -1 的数据类型”,所以这个讨论是基于一个不存在也不可能存在的荒谬前提下的无意义争论。
回复

使用道具 举报

发表于 2005-6-10 10:05:59 | 显示全部楼层
flag = 0 时 , if(0) = TRUE , 执行 run1()
flag = -1时 , if(-1) = FALSE ,执行run2()



wolf0403, 所以我说是你做的东西还不多。什么是语言?语言是根源于你的平台你的系统的。你只看了c语言,而且是pc下的一些固定的死板的东西,你就认为没有true和false?
下面这几条你看看
1.内存空间不只是内存。
2.-1是什么 0是什么
3.cpuA寄存器的表述是电平全高或者全低。cpuB寄存器的表述可能是单比特/双比特高和低
4.如果你的地址是在闪存上/i2c上同样会有这样的情况
5.为了支持A和B的处理器架构,你如何书写代码?

现在你再看看 是不是true和false只是“一个不存在也不可能存在的荒谬前提下的无意义争论”
回复

使用道具 举报

发表于 2005-6-10 10:31:40 | 显示全部楼层
[quote:d876be7abd="wsm"]


wolf0403, 所以我说是你做的东西还不多。什么是语言?语言是根源于你的平台你的系统的。你只看了c语言,而且是pc下的一些固定的死板的东西,你就认为没有true和false?[/quote]
Don't even think about it's being "死板". It's called "Standard" and it's the baseline that everything depends on. If there's no standard but every compiler, every platform makes its own, it's pointless to discuss publicly and generally, as we are doing now.
下面这几条你看看
1.内存空间不只是内存。

If you mean "Virtual Memory", it's no difference for user space programs.
2.-1是什么 0是什么

I'm not interested in philosophy or puzzles. Express your point or keep it in silence.
3.cpuA寄存器的表述是电平全高或者全低。cpuB寄存器的表述可能是单比特/双比特高和低
4.如果你的地址是在闪存上/i2c上同样会有这样的情况
5.为了支持A和B的处理器架构,你如何书写代码?

If we have to deal with all these low level details while dealing with a simple boolean expression in C language, why C is refered as a "high level" language while comparing to assembly language? C is designed to be portable and machine / architecture independent, and you're just ignoring this.

I'm replying this post using a eMac running Mac OS X(in different endian, different CPU arch, different operating system and compiled with different compiler) but I'm quite confident that simple programs that follows the C standard will always work. That's how the world works. There used to be too much variations of implemtation to the language, to the UNIX standard, to all kinds of industrial products and soon or later people have discovered the importance of standards. Standards is the base of modern industry. They exists to be followed, not to be questioned. That's how modern industry grows, and that's where IT industry is seeking their way to.
回复

使用道具 举报

发表于 2005-6-10 10:37:40 | 显示全部楼层
我推荐一本 "编写优化、高效、无错地代码(Writing Clean Code)",
下载地址 :  http://www.infoxa.com/asp/book/xxnr.asp?id=1510
是M$的一个牛人写的,这个是中文版的
虽然M$会被人B4,但是好的东西还是要学一学的.

有空来这里看看 http://www.intergamezone.com/ 我们正打算做一个网络棋牌游戏,刚刚做了服务端的基本框架.欢迎有兴趣的朋友加入一起开发,现在这个网站用一台自己的pc在做服务器,访问速度可能有点慢.
subversion地址 : http://www.intergamezone.com/subversion/repository/

subversion帐号的申请看一下论坛的帖子.
回复

使用道具 举报

发表于 2005-6-13 09:36:38 | 显示全部楼层
肃静!

鹬蚌相争,渔翁得利! 大哥大姐请继续!,小弟会认真听的,好多论坛上不曾出现的精辟论断!

      窃笑ing.........
回复

使用道具 举报

发表于 2005-6-13 12:02:10 | 显示全部楼层
鹬蚌相争,渔翁得利

还没说“螳螂捕蝉,黄雀在后”呢……
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-5 21:44 , Processed in 0.106199 second(s), 12 queries .

© 2021 Powered by Discuz! X3.5.

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