C语言中什么时候0表示真,1表示假
我记得逻辑表达式的值 真为非0,假为0
关系表达式值 真为1,假为0
那么像if while for 里面的条件,最终用的是逻辑值还是关系值呢 展开
C语言规定1为真(TRUE),0为假(FALSE)。
C语言中0为假,1为真,逻辑与和整数乘法相同,而c语言中的1就是整数,整数除法1/2结果也会是整数,数学中答案是0.5,但是整型的不能保存0,5。因此会直接变成0。后面的计算结果是什么就不重要了。
总的来说,计算机的最小存储单位是字节,一个字节可存储256个数字,真和假却只有两个数字。C语言从C99才有_ Bool这 个布尔类型。
C99之 前一直使用整数类型存储布尔值,那么除去真和假两值以外还至少有254个数字,这些数字不可能是非真非假,那么只能使用一个值代表真或假,其他值代表前面值的相反值。
扩展资料
计算机识别0和1的原理:
计算机中RAM存储正在使用的程序和文件,硬盘则是文件永久储存的地方。硬盘实际上由若干磁盘构成,磁盘上大量的有序的磁性粒子完成,磁性则可以表示0和1。当需要对文件进行读写时,实际上是发出电脉冲信号移动读写头改变磁性粒子的磁性或者是得到磁性粒子的磁性。
计算机中,一串数码作为一个整体来处理或运算的,称为一个计算机字,简称宇。字通常分为若干个字节(每个字节一般是8位)。在存储器中,通常每个单元存储一个字,因此每个字都是可以寻址的。字的长度用位数来表示。
在计算机的运算器、控制器中,通常都是以字为单位进行传送的。宇出现在不同的地址其含义是不相同。例如,送往控制器去的字是指令,而送往运算器去的字就是一个数。
在计算机中作为一个整体被存取、传送、处理的二进制数字符串叫做一个字或单元,每个字中二进制位数的长度,称为字长。
所以题目本身是一个伪命题,在C语言的环境下,任何时候都不会出现0为真1为假的情况。
扩展开来,用来判断的并不一定是1和0两种,在出现其它值的情况下,C语言会做如下操作:
1 把非整型类型的值,如浮点型,指针等,强制转为整型。
2 判断该整型值是否为0。
3 如为0,则值为假;如不为0,则值为真。
但是计算机只认识 0 和 1 ,不认识真假,所以到底如何表示,你完全可以自定义。你可以自己赋予它们你自己所特有的含义。
你甚至可以认为 0 是女的,1 是男的。或者 0 是活着,1是死了。抑或是 0 表示白天,1表示晚上。
重要的不是它们分别表示什么,而是确定了这样一个表示系统以后,使用这个系统的程序单元协调一致就行了。
例如
if(i)
这句话中,如果i = 0那么if不成立;i = -1,1,2,3,4,5,-23....都成立。