C语言中到底是非0表示真,还是1表示真?

我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重点说一说C语言中到底是非0表示真,还是1表示真?这就是说到C语言中的两个常见运算形式,即关系运算符和逻辑运算符。

为照顾急性子的同学,先直接说结论:

关系运算符和逻辑运算符用“真”和“假”表示运算的结果,非0的值在关系运算中被视为“真”,0表示“假”。逻辑运算的结果用整型数据1表示“真”,用整型数据0表示“假”。

下面详细来看,

一、关系运算

1.关系运算符

每个关系运算符对它左侧值和右侧值进行比较大小的运算

2.关系表达式

用关系运算符连接起来的式子。若关系为真,关系表达式的值为1;若关系为假,关系表达式的值为0;

3.优先级

关系运算符优先级低于算术运算符,高于赋值运算符。

下表显示了 C 语言支持的所有关系运算符。假设变量 A 的值为 1,变量 B 的值为 2,则:

二、逻辑运算

1.逻辑运算符

逻辑运算符的运算对象通常是关系表达式。

&& 逻辑与 两边运算量都为1时,结果为真

|| 逻辑或 两边运算量都为0时,结果为假,否则为真

! 逻辑非 使操作数的值0变1,1变0

说明:

&& 和||是‚双目运算符,要求有两个操作数。! 是单目运算符,只要求有一个操作数。

2.逻辑表达式

用逻辑运算符将关系表达式或逻辑量连接起来的式子。

a&&b a、b均为1, 则a&&b为1

a||b a、b之一为1,则a||b为1

!a 若a为真,则!a为假

3.优先级

!运算符优先级高于算术运算符,与自增自减运算符同级。

&&运算符优先级高于||,两者的优先级都低于关系运算符,高于赋值运算符。

下表显示了 C 语言支持的所有逻辑运算符。假设变量 A 的值为 1,变量 B 的值为 0,则:

作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。

  • 11
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: "!!5" 是一个表达式,其 "!" 是逻辑非运算符,作用是将一个非零值转换为 0,将 0 值转换为 1。因此,两个逻辑非运算符 "!!" 能将一个非零值转换为 1,这就解释了为什么 "!!5" 会变成 1。 ### 回答2: C语言表达式“!!5”之所以会变成1是因为它包含了两个逻辑运算符"!"。 首先,我们来看第一个"!"运算符。"!"运算符是逻辑非运算符,它会将非0的整数取反成0,将0取反成1。在这里,数值5是非零的,所以"!5"的结果是0。 接着,我们再看第二个"!"运算符。它将上一个运算结果0再次取反,即将0取反成1。 最终,两个"!"运算符的结果是1。 因此,表达式"!!5"的结果是1。 总结起来,"!!"运算符可以将任意非零的值转换为1,而0则保持不变。这种转换是通过两次逻辑非运算来实现的。在C语言,非零的值被视为,0为假。这种转换在一些编程场景非常有用,可以将非零值转换为特定的逻辑值。 ### 回答3: C语言的表达式"!!5"的结果为1,是因为在C语言非零值被视为(true),而0被视为假(false)。 首先,双重逻辑非运算符"!"表示取一个值的逻辑非(即取反)。如果一个值为零,则取非结果为1;如果一个值为非零,则取非结果为0。 在表达式"!!5",首先对数字5进行第一个逻辑非运算"!5"。由于5是非零值,所以"!5"的结果为0。 然后,再对上一步的结果0进行第二个逻辑非运算"!0"。由于0是假值,所以"!0"的结果为1。 因此,表达式"!!5"的最终结果为1。 在C语言,双重逻辑非运算符"!!"常用于将任意非零值转换为1,或者将零值转换为0,用于简化条件判断等逻辑运算。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值