C语言 逻辑表达式的更优写法

本文将介绍逻辑表达式的更优写法,从而避免许多问题。

一、C语言中的逻辑运算符

运算符 含义 举例 说明
&& 与 a&&b 仅当a,b同时为真时,结果为真
|| 或 a||b a,b有一个为真,则结果为真
! 非 !a 若a真,则结果为假;若a假,则结果为真

​

二、需要记住的特性

1.运算优先级

非 >> 算术运算符 >> 关系运算符 >> 与和或 >> 赋值运算符

2.从左至右扫描

3.并不是所有的逻辑运算符都会被执行

例如:

a&&b 当 a 为假,结果必定为假,不会(也没必要)再判断 b 。

a||b 当 b 为真时,结果必定为真,不会(也没必要)再判断 b 。

​

三、总结

1.避免数组越界

例如:

假设 str[ ] 的数组长度为 strsize ,下标范围为 0~strsize-1 。

错误写法:

1
for(i=0;str[i]==key&&i<strsize;i++);

当 i==strsize 时,会首先判断 str[i] ,此时便会发生数组越界的错误。

更优写法:

1
for(i=0;i<strsize&&str[i]==key;i++);

将判断条件调换顺序,优先判断“安全条件”,便可以很好地防止数组越界问题。

​

参考