C语言中的函数与逻辑运算详解
立即解锁
发布时间: 2025-08-20 01:16:48 阅读量: 1 订阅数: 4 


Arduino C语言编程入门与实践
### C语言中的函数与逻辑运算详解
#### 1. 逻辑运算符与真值表
逻辑运算符的使用可以通过真值表来清晰展示。真值表呈现了使用两个表达式进行逻辑测试的所有可能结果。常见的逻辑运算符有逻辑与(`&&`)、逻辑或(`||`)和逻辑非(`!`),具体如下表所示:
| 运算符 | 含义 | 示例 |
| ---- | ---- | ---- |
| `&&` | 逻辑与 | `X && Y` |
| `||` | 逻辑或 | `X || Y` |
| `!` | 逻辑非 | `!X` |
##### 1.1 逻辑与运算符(`&&`)
逻辑与运算符由两个连续的`&`字符组成。其真值表如下:
| 表达式1 | 表达式2 | 表达式1 `&&` 表达式2 |
| ---- | ---- | ---- |
| `TRUE` | `TRUE` | `TRUE` |
| `TRUE` | `FALSE` | `FALSE` |
| `FALSE` | `TRUE` | `FALSE` |
| `FALSE` | `FALSE` | `FALSE` |
例如,当变量`k`等于2,`j`等于3时,`if (k == 2 && j == 3)`语句中,表达式`k == 2`和`j == 3`都为真,根据真值表,整个逻辑与运算结果为真。而`if (k == 9 && j == 3)`中,表达式`k == 9`为假,所以整个逻辑与运算结果为假。只有当两个表达式都为真时,逻辑与运算才会产生真的结果。
在复杂表达式中,可能会使用多个逻辑运算符,此时需要了解运算符的优先级。逻辑与和逻辑或运算符的优先级分别为10和11,逻辑非运算符是一元运算符,优先级相对较高,为2。可以利用优先级表来解析复杂语句。
##### 1.2 逻辑或运算符(`||`)
逻辑或运算符由两个连续的竖线字符组成。其真值表如下:
| 表达式1 | 表达式2 | 表达式1 `||` 表达式2 |
| ---- | ---- | ---- |
| `TRUE` | `TRUE` | `TRUE` |
| `TRUE` | `FALSE` | `TRUE` |
| `FALSE` | `TRUE` | `TRUE` |
| `FALSE` | `FALSE` | `FALSE` |
例如,当`k`等于2,`j`等于3时,`if (k == 2 || j == 3)`和`if (k == 9 || j == 3)`的逻辑或表达式结果都为真。只有当两个表达式都为假时,逻辑或运算才为假。并且,如果逻辑或语句中第一个表达式为真,代码将不会再计算第二个表达式,这称为短路表达式求值,可让编译器进行小的代码优化。
##### 1.3 逻辑非运算符(`!`)
逻辑非运算符是感叹号。其真值表如下:
| 表达式1 | `!` 表达式1 |
| ---- | ---- |
| `TRUE` | `FALSE` |
| `FALSE` | `TRUE` |
例如,当`k`等于2时,`if (! (k == 2))`,因为`k == 2`为真,所以`! (k == 2)`为假。使用括号是因为相等运算符`==`的优先级低于逻辑非运算符,且括号能使表达式的意图更清晰。
#### 2. 编写自己的函数:判断闰年
现在可以利用逻辑运算符编写一个判断闰年的函数。闰年的判断规则是:如果年份能被4整除但不能被100整除,或者能被400整除,则该年份为闰年。可以将这个规则分解为以下几个表达式:
- “如果年份能被4整除”:可以用`(year % 4 == 0)`表示,其中`%`是取模运算符,用于返回整数除法的余数。
- “但不能被100整除”:可以用`(year % 100 != 0)`表示。
- “如果年份能被400整除”:可以用`(year % 400 == 0)`表示。
综合起来,判断闰年的完整`if`测试如下:
```c
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
return 1; // 是闰年
} else {
return 0; // 不是闰年
}
```
以下是完整的`IsLeapYear()`函数代码:
```c
/*****
Purpose: Determine if a given year is a leap year
Parameters:
int year The year to test
Return value:
int 1 if the year is a leap year, 0 otherwise
*****/
int IsLeapYear(int year)
{
if
```
0
0
复制全文
相关推荐










