【c语言】&& 逻辑运算符运算规则

简介: 【c语言】&& 逻辑运算符运算规则

1.&&逻辑运算符的坑

int x=0,y=0,z=0;
z = (x==1) && (y=2);
printf("%d",y);//y=0;

今天遇到了同学问的问题,为什么y输出为0.

我第一时间也记不得,工作中一般不会写这种代码,但是却不能忽略。

通过查阅资料,也很快明了。

在 C/C++ 中,逻辑运算符 && 表示逻辑与运算。当 && 运算符的左边表达式的值为假(即 0),那么右边的表达式不会被计算,因为无论右边的表达式是真还是假,整个逻辑与表达式的结果都为假。这种情况下,右边的表达式被称为“短路”(short-circuit),因为它没有被完全计算。

例如,考虑以下代码:

int a = 5;
int b = 10;
if (a == 5 && b++ == 10) {
    // do something
}

在这个代码中,a == 5 的值为真,但是 b++ == 10 的值为假,因为 b++ 的结果是 10,但是它与 10 不相等。因此,整个逻辑与表达式的结果为假,右边的表达式 b++ == 10 没有被计算,b 的值仍然是 10。

另外,逻辑或运算符 || 也有类似的短路行为。当 || 运算符的左边表达式的值为真时,右边的表达式不会被计算,因为无论右边的表达式是真还是假,整个逻辑或表达式的结果都为真。

同学们,理解了吗?点赞了吗?

目录
相关文章
|
2月前
|
存储 C语言 C++
【c语言】运算符汇总(万字解析)
今天博主跟大家分享了c语言中各种操作符的功能、使用方法以及优先级和结合性,并且与大家深入探讨了表达式求值的两个重要规则--算数转换和整形提升。学习这些知识对我们的C语言和C++学习都有着极大的帮助。
132 2
|
5月前
|
存储 C语言
C语言数据类型、变量和运算符以及printf相关问题
C语言数据类型、变量和运算符以及printf相关问题
|
1月前
|
C语言
【C语言】条件运算符详解 - 《 A ? B : C 》
条件运算符(也称为三元运算符)是C语言中唯一的三元运算符。它通常用于替代简单的 `if-else` 语句。
118 6
|
4月前
|
C语言
C语言判断和运算符联系
在 C 语言中,判断与运算符紧密相关,主要体现在条件表达式的使用上。
207 87
|
4月前
|
安全 C语言
C语言运算符的使用注意点
在C语言中,正确使用运算符能提升代码的可读性和效率。本文介绍了八大注意事项:运算符优先级和结合性影响运算顺序;自增/自减运算符分前缀和后缀形式;逻辑运算符有短路特性;位运算符直接操作二进制位需谨慎;条件运算符简洁但避免复杂嵌套;类型转换避免意外结果;使用括号明确运算顺序。掌握这些要点有助于编写更安全高效的代码。
223 72
|
2月前
|
C语言
c语言运算符
C的运算符有以下几种: 算术运算符:+、-、*、/、% 结合方向自左向右 关系运算符:>、<、==、>=、<=、!= 逻辑运算符:!、&&、|| 位运算符<<、>>、~、|、^、& 赋值运算符:=及符号扩展赋值运算符(+=、-=、*=、/=) 条件运算符:? : 逗号运算符:, 指针运算符:*、& 求字节运算符:sizeof 强制类型转换运算符:((类型)) 分量运算符:.、-> 下标运算符:[]
42 4
|
3月前
|
存储 大数据 编译器
C语言:结构体对齐规则
C语言中,结构体对齐规则是指编译器为了提高数据访问效率,会根据成员变量的类型对结构体中的成员进行内存对齐。通常遵循编译器默认的对齐方式或使用特定的对齐指令来优化结构体布局,以减少内存浪费并提升性能。
|
3月前
|
存储 Java C语言
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
49 3
|
3月前
|
C语言
C语言条件运算符详解
C语言条件运算符,也称为三元运算符,是一种简化if-else语句的表达式,形式为:条件?表达式1:表达式2。当条件为真时,计算并返回表达式1的值;否则计算并返回表达式2的值。它可用于快速实现简单的条件分支逻辑。
|
4月前
|
安全 C语言
在C语言中,正确使用运算符能提升代码的可读性和效率
在C语言中,运算符的使用需要注意优先级、结合性、自增自减的形式、逻辑运算的短路特性、位运算的类型、条件运算的可读性、类型转换以及使用括号来明确运算顺序。掌握这些注意事项可以帮助编写出更安全和高效的代码。
66 4