龙空技术网

C语言中使用使用&& 和 || 来tidy的你的代码

西门剑心 25

前言:

此时我们对“c语言相或”可能比较珍视,小伙伴们都需要剖析一些“c语言相或”的相关内容。那么小编也在网摘上汇集了一些有关“c语言相或””的相关文章,希望各位老铁们能喜欢,看官们快快来学习一下吧!

在刚开始学习C语言时,往往在函数中罗列代码逻辑,很容易让函数变得冗长和复杂。要避免这种情况,你可以尝试以下几种官方方法:

函数拆分:将一个大的函数拆分为多个小函数,每个小函数只完成一个独立的任务。这不仅使代码更易于阅读和理解,也便于调试和维护。使用注释:在代码中添加简短而清晰的注释,说明每个函数或代码块的作用。这样做可以帮助你理清思路,防止冗长的代码逻辑。遵循单一职责原则:每个函数只应该做一件事情。如果一个函数包含多个逻辑步骤,考虑将这些步骤分解成独立的函数。避免嵌套过深:过多的嵌套会使代码难以阅读和理解。你可以通过适当的条件检查、使用早返回(early return)等方式,减少嵌套层级。代码复用:如果某些代码逻辑在多个地方重复出现,考虑将其提取为一个独立的函数,以便复用。

想必这些方法,你已经很了解。下面介绍一个简单地方式通过C语言中的&& 和 || 把函数调用紧凑的排列。让代码看起来更加短小整洁。

第一种方式使用&&整合条件与函数调用:

if(s_fhd != 0){     if((res = close(s_fhd)) != 0)    {        return ERR_LINK_DOWN;    }}

改进版:利用短路特性:可以避免不必要的计算,甚至可以用于防止潜在的错误

if(s_fhd != 0 && (res = close(s_fhd)) != 0){    return ERR_LINK_DOWN;}
第二种方式使用||整合多函数调用:
	if(0 != SetGPIB((pinVal >> 0) & 1, 0)    || 0 != SetGPIB((pinVal >> 1) & 1, 1)    || 0 != SetGPIB((pinVal >> 2) & 1, 2)    || 0 != SetGPIB((pinVal >> 3) & 1, 6)    || 0 != CheckGPIB())        return ERR_GPIB_CTRL;

这里直接给出作者常用的方式。让相关函数调用紧凑的放在一起。阅读代码一目了然。

下面了解一下 && 和 || C语言逻辑运算符的特性

&&(逻辑与)含义:&& 代表“逻辑与”(AND)。当且仅当运算符两侧的表达式都为真时,整个表达式的结果才为真。用法:expr1 && expr2 只有在 expr1 和 expr2 都为真(非零)时,结果才为真(非零);如果任一表达式为假(零),则结果为假(零)。||(逻辑或)含义:|| 代表“逻辑或”(OR)。只要运算符两侧的任一表达式为真,整个表达式的结果就为真。用法:expr1 || expr2 只要 expr1 或 expr2 中有一个为真(非零),结果就为真(非零);只有当两个表达式都为假(零)时,结果才为假(零)。重点总结:优先级 && 的优先级高于 ||。这意味着在没有括号的情况下,&& 表达式会先计算。

int a = 1, b = 0, c = 1;if(a || b && c){    // 实际计算顺序是 b && c 首先计算,然后再与 a 进行 || 运算    // b && c 的结果为 0, 然后 a || 0 的结果为 1,故该代码块会执行}
在 C 语言中,多个 && 或 || 运算符的执行顺序是从左到右进行的,并且具有短路特性。左到右:多个 && 或 || 表达式会按照从左到右的顺序进行计算。&& 短路特性:一旦某个条件为假(零),后面的条件将不会被计算,整个表达式直接返回假(零)。|| 短路特性:一旦某个条件为真(非零),后面的条件将不会被计算,整个表达式直接返回真(非零)。

标签: #c语言相或