C语言中逻辑表达式和关系表达式的值为真时,到底是用非0的任何数表示还是只能用1来表示?
在C语言中,逻辑值“真”用数字1表示,逻辑值“假”是用数字0表示。在c语言中,任何非0数字都能够被系统解释为“逻辑真”。
逻辑运算的值也是有两种分别为真和假,C语言中用整型的1和0来表示。其求值规则如下:
1、与运算 &&
参与运算的两个变量都为真时,结果才为真,否则为假。
例如:5>=5 && 7>5 ,运算结果为真;
2、或运算 ||
参与运算的两个变量只要有一个为真,结果就为真。两个量都为假时,结果为假。
例如:5>=5||5>8,运算结果为真;
3、非运算!
参与运算的变量为真时,结果为假;参与运算量为假时,结果为真。
例如:!(5>8),运算结果为真。
扩展资料
源代码如下:
#include <stdio.h>
int main()
{
//定义小编兜里的钱
double money =12.0
//定义打车回家的费用
double cost =11.5
printf("小编能不能打车回家呢:");
//输出y小编就打车回家了,输出n小编就不能打车回家
printf("%c\n",money>=cost?'y':'n' );
return 0;
}
可以打印出来看:
#include <stdio.h>
#include <windows.h>
main(){
printf("%d %d",TRUE, FALSE);
return 0;
}
-------
用 逻辑运算符 和 关系运算符 来运算时,表达式里 允许用什么 数值,便可用什么数值。
非0的任何数 是 数,不等同 逻辑值。例如, 2 ,3 ,4 , -3, 是 数。
int x = 3;
printf("%d\n",!x); (非x) 打印出 0
x 等于 0, (非x) 打印出 1。其它情况 ,打印出 0
不能说,非0的任何数 都是真。
而是说 非0的任何数 的 非运算的结果 都是 真。
实际上在C语言中是没有布尔类型的,任何中任何非0都表示真,0表示假。
比如:
if(1&&2&&3&&4){
printf("true");
}
上面的结果是输出true,表明1、2、3、4都是真,这就印证了开头的那句话。
但是在实际应用中为了方便使用,通常还是用1来表示true,0表示false来实现布尔类型。
比如windows中minwindef.h中的定义:
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
关系表达式中它的结果只有1和0