标题:[讨论]计算机的“是非观”——逻辑运算的疑惑
只看楼主
blackorchis
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2006-7-4
 问题点数:0 回复次数:5 
[讨论]计算机的“是非观”——逻辑运算的疑惑
谭浩强所编的课本中有如下描述:
逻辑表达式的值应该是一个逻辑量“真”或“假”。C编译在表示逻辑运算结果时,以数值1代表“真”,以0代表“假”, 但在判断一个量是否为“真”时,以0代表“假”,以非0的代表“真”。即将一个非零的数值认作为“真”。

对于最后一句话:即将一个非零的数值认作为“真”。在计算机世界里,“真”是什么?如:
while( a = 5 )
{
...
}
括号中的赋值表达式的结果是5,计算机认为它“真”,这个真是5还是1呢?
搜索更多相关主题的帖子: 计算机 逻辑运算 是非观 
2007-11-06 10:02
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
得分:0 
c中没有布尔型的变量类型,所以把0定为假,非零定为真

至于说什么“是非观”,其实计算机里面只有1和0,你想定义什么为真,什么为假都行

比如你可以定义99为真,一切非99的数都是假,只要你能写出来一个编译器,那就是可行的

[此贴子已经被作者于2007-11-6 10:55:12编辑过]


从BFS(Breadth First Study)到DFS(Depth First Study)
2007-11-06 10:54
liux945
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-9-30
得分:0 
while(a=5){...}
当a=5的时候循环就执行 否则就结束循环


如果是
while(5){...}
这个就是循环永远执行的 因为5永远是非0的 所以循环条件永远为真

吃得苦中苦 方为人上人
2007-11-06 11:28
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
得分:0 
对于最后一句话:即将一个非零的数值认作为“真”。在计算机世界里,“真”是什么?

不是计算机世界,是 C 中。


计算机处理的是二进制数据,如: “01010101”(char 类型8位),十进制数“82”。

“真”就是一个二进制数中有一个位为“1”,
“假”就是所有的位都为“0”。

“00000000” 这就是假。

signed char (有符号char类型) "11111111" 这是 “-1”,

int 类型的 “-1” 如下:(32个1)

“11111111111111111111111111111111”

/* 上面的这种负数表示方式是“二进制补码”。(不说明了)*/



//-------------------------------------------------------------//

C99 标准中有 “布尔型”

但“布尔型”是以char类型存在的(因为计算机最小可以访问的整数就是char类型)

而且“布尔型”是用位字段实现的。

[此贴子已经被作者于2007-11-6 12:05:35编辑过]


—>〉Sun〈<—
2007-11-06 11:32
jackys2006
Rank: 1
等 级:新手上路
帖 子:195
专家分:0
注 册:2006-3-10
得分:0 
以下是引用liux945在2007-11-6 11:28:27的发言:
while(a==5){...}
当a等于5的时候循环就执行 否则就结束循环


如果是
while(5){...}
这个就是循环永远执行的 因为5永远是非0的 所以循环条件永远为真


2007-11-06 17:06
TheEleven
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-11-5
得分:0 
同ls,貌似while (a=5)必然为真,成为一个死循环,新手常犯的错误之一

螃蟹由于不会爬树,只好在树下等柿子MM自己下来。秋天来了,烂透了的柿子掉下来,砸死了螃蟹~~~Aho
2007-11-06 19:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-183834-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.235321 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved