回 帖 发 新 帖 刷新版面

主题:一个菜鸟的问题,希望高手来回答下哈!小弟感激不尽

小弟刚学C不久还请大家多多见谅哈....
在一次上课中,老师说:
           关系运算符的结果必须看做整数1和整数0,不能视为"布尔量",在C语言中,如果运算结果取得非0值,则为真,取得0则为假,而关系表达式如为真,则其结果等于1,为假时,则结果为0.关系运算符都是取2个运算分量,不可取多分量的式.
如:2<X<6是不合法的关系表达式.
  请问高手门,这布尔量是什么意思..为什么结果必须要看做整数1和整数0呢???
小弟弟在这不是很明白,理解不是很通..还请大虾帮个忙解答下哈...
   小弟感觉不尽

回复列表 (共3个回复)

沙发

应该明白这些概念:布尔运算,布尔类型,布尔值
   布尔运算也较逻辑运算,和整数运算不同,典型的整数运算有加,减,乘,除,布尔运算则包括与、或,非。

   整数类型的变量可以取无穷个值,但布尔类型的变量只能取2 个值,true和false。在c++中,有专门的变量类型bool,和布尔值(true和false),在c语言,一般以int表示布尔类型,非零视为true,0视为false。整数不应和布尔类型的变量比较,如b是表示布尔值的整数,下列是错误的写法。
  "if (b==1)" 
  “if (b==0)”
这个是正确的写法:
   if (b)
   if (!b).
  但有些人可能不总是遵守这个约定,为了保险起见,在为布尔变量赋值时,为true则置为1,为false则置为0.

板凳

[quote]请问高手门,这布尔量是什么意思..为什么结果必须要看做整数1和整数0呢???[/quote]
布尔量就是真和假,离散数学学过吧,代数系统<{True,False},Not,And,Or>是标准的布尔代数,也是最基本的,在C语言里要对它编码(应该是在计算机内,任何东西都是数字表示的),在逻辑判断中用0表示假,这里的0可以是任意类型的,可以是byte,word,dword,0就是说它的每一位都是0,而用其它情况表示真,而在C语言中的关系运算,具体指<,>,<=,等,如果运行结果为真,那表达式的值是1(它总要是个确定的吧,这也不和逻辑判断那地方矛盾),如果为假,一样的结果是0。

举个例子,汇编和C中都喜欢这样写循环:

for(int c=10;c;c--)
{
 ...
}
它将循环10次。

还有(你可以自己实验的):

int a=123,b=0;
printf("%d,%d,%d\n",a<b,a&&b,a||b);

看看什么结果。

3 楼

谢谢各位大哥们哈!!! 
  小弟真是感激不尽,谢谢大哥们忽忽!!!
小弟偶一定回努力学好C的哈,不会有付大哥们的期望。。。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册