为什么很多系统api都以返回 0 值表示成功而非其它值,高人说说理由?

wyalchemy 2003-02-21 05:16:46
有很多的系统api都以返回 0 值表示成功,就连sqlserver的几乎所有系统存储过程返回 0 值表示成功,返回非零值则表示失败。为什么不是返回其它值表示成功,这样有什么好处或者仅仅是个规范,希望高人能说说理由,谢谢各位了!
...全文
589 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyalchemy 2003-02-24
  • 打赏
  • 举报
回复
多谢各位的解释~ 。
另外说明一下,给sevencat(七猫) 分是觉得该鼓励有根据的解释,并不是鼓励回复和该thread的主旨无关。
另外如果还有更好的解释,可以给出,然后消息给我要分~~,结贴先
vcPlayer 2003-02-23
  • 打赏
  • 举报
回复
成功只有一种情况“成功”,但执行失败却可以有多种原因引起,用非“零”即可返回相应的ERROR NO。
icelight 2003-02-22
  • 打赏
  • 举报
回复
HRESULT

好吧好吧,把bool改为HRESULT吧,,,长痛不如短痛
XueBoy163 2003-02-22
  • 打赏
  • 举报
回复
把bool改为DWORD就行了~~~~
没问题的。
Rigel 2003-02-22
  • 打赏
  • 举报
回复
同意楼上的说法。

0就是真,非0是错误代码。
我现在写就是按照这个规则写的。
westfly 2003-02-21
  • 打赏
  • 举报
回复
非0可以返回错误码。
icelight 2003-02-21
  • 打赏
  • 举报
回复
惨。我现在写的函数都是用bool值表示成功失败,true为成功...

需要全部改过来吗?
fengge8ylf 2003-02-21
  • 打赏
  • 举报
回复
用0表示成功,用其他数表示各种失败的原因。这样表示或许更合理吧
sevencat 2003-02-21
  • 打赏
  • 举报
回复
如果密码分析者根据频率数能破译出9个最常用的字母e,t,a,o,n,i,r,s和h,一般来说他就可破译70%的密码。最现代的译密技术也是以古老的频率分析法为根据的
频率分析法还可以用来对单词中的字母的位置及其组合进行分析。例如,全部英语单词中有一半以上是似t,a,o,s或w开头的。仅10个单词(the,of,and,to,a,in,that,it,is和I)就构成标准英语文章四分之一以上的篇幅。
sevencat 2003-02-21
  • 打赏
  • 举报
回复
to:yinux
键盘字母的分布是和打字机的键盘分布一致的,而打字机键盘的分布是考虑了字母的运用频率
并防止了"经常连续使用的字母如果敲击的间隔时间太短则铅字容易挤在一起"的问题


我看到有些文章说好像不是这样的,
字母 空格 E T O A N I R S H
频率 0.2 0.105 0.012 0.0654 0..63 0.059 0.055 0.054 0.052 0.047
字母 D L C F U M P Y W Q
频率0.035 0.029 0.023 0.0225 0.0225 0.021 0.0175 0.012 0.012 0.011
字母 B V K X J Q Z
频率0.0105 0.008 0.003 0.002 0.001 0.0001 0.001
XueBoy163 2003-02-21
  • 打赏
  • 举报
回复
如果返回错误号的话往往用0来表示正常
yinx 2003-02-21
  • 打赏
  • 举报
回复
to sevencat(七猫):
键盘字母的分布是和打字机的键盘分布一致的,而打字机键盘的分布是考虑了字母的运用频率
并防止了"经常连续使用的字母如果敲击的间隔时间太短则铅字容易挤在一起"的问题
wyalchemy 2003-02-21
  • 打赏
  • 举报
回复
to sevencat(七猫) :呵呵,或许这本身确实没有什么理由;不过如果这有什么理由的话,我们或许可以从中获益哦~~

欢迎各位 继续 关注!
内存泄漏 2003-02-21
  • 打赏
  • 举报
回复
问盖茨?!
sevencat 2003-02-21
  • 打赏
  • 举报
回复
大家都这样用,就像我们的键盘字母为什么是这样摆布的,没什么理由。或者人为什么只有两个眼睛,有三个不是更好吗?
或者人长成六角形的不是更好吗?
sdb72 2003-02-21
  • 打赏
  • 举报
回复
这个问题也困惑过,呵呵
  • 打赏
  • 举报
回复
我觉得可能是这样的,比如要根据返回值进行判断时:
假如返回值是一个非0值,那么从汇编角度看,就需要两行语句
test eax,?
j……
但是如果返回值为0,那么就只用jz或者jnz就可以了。
nbgyf 2003-02-21
  • 打赏
  • 举报
回复

瞎说之见:
以前的C或C++语言,还有Pascal语言的 0 为真,偏偏 VC 是 1 为真;
我想可能MS是为了兼容性考虑或他们的程序员,较保守。。。。。。。

呵呵;

Good Luck

2,644

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧