返回狼盟编程首页
编程搜索 [狼盟旧档]
论坛统计


请输入搜索关键字:
├─◆ 狼盟首页 > 查看贴子 > 详细信息

楼主

一个很弱志的问题,“真”和“非0”的区别。高志商者进。


进来的都是高志商的各位相信大家都知道“真”用1来代表,“假”用0来代表。最少我的教师是这样教我的。但我们在学习WIN32API时常碰到这样一种情况。例如API手册中常说:如果成功则返回“非0”,失败则返回“0值”。

    看样子他们好像把“0”以外的值都当真来处理。下面一段代码剪自<<WINDOWS程序设计>>中的一个例程。

case WM_COMMAND:

               // Messages from edit control

          

          if (lParam && LOWORD (wParam) == EDITID)

          {

在这段代码中只有把非0值都按真来处理逻辑与运算才能成立。如果真的是这样我们应该如何理解和应用“真”和“非0”?





vrace [ 1 楼 ]
2004-06-30 23:23:00
#define TRUE 1
#define FALSE 0

That code means:

if((lParam && LOWORD(wParam) == EDITID) == TRUE)
{
///


H_TIGER [ 2 楼 ]
2004-07-01 10:20:00
??????????? 

gogameover [ 3 楼 ]
2004-07-01 13:13:00
0和1就是一个基本存储单位的两种状态,在机器中内存即为充电和放电两种状态
这两种状态要表示什么就是人定的了  

H_TIGER [ 4 楼 ]
2004-07-01 15:13:00
楼上的朋友所说的我都知道。我是说现在WINAPI好像是把0以外的值都按真来处理了。
如果是这样的话,真==1不就没有必要了吗?还是“真(1)”和“非0”之间有什么区别使之可以有所 妙用 但我们又不知道的? 

vrace [ 5 楼 ]
2004-07-01 22:13:00
You could write a short app to see how does it work. Like:

int Foo()
{
return 2;
}

int main()
{
if(Foo() == TRUE)
{
  printf("Foo returned true.");
}
return 0;


H_TIGER [ 6 楼 ]
2004-07-02 05:38:00
朋友!又是你!小弟的英文很烂啊!能不能用中文啊??小弟在这里先谢谢你啦! 

LangHua9168 [ 7 楼 ]
2004-07-02 10:17:00
你不觉得这样规定很妙吗?
0为假,非0为真
若0为假,1为真的话
那么万一当出现返回值为2,3,4......
那该怎么处理呢?认为是异常吗?
if (x==0)
    printf("False");
else
    printf("True");
 

LangHua9168 [ 8 楼 ]
2004-07-02 10:19:00
规则是人定出来的,但要定的妙是上策!!!!!!!!!! 

H_TIGER [ 9 楼 ]
2004-07-02 14:30:00
我也知道这样定是非常妙。我只是想看一下两者之间的区别还会有什么妙用我们是不知道的。如果有的话当然是知道比不知道的好啦!