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

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

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

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

二、需要记住的特性

1.运算优先级

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

2.从左至右扫描

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

例如:

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

a||bb 为真时,结果必定为真,不会(也没必要)再判断 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++);

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

参考