初学C语言基本运算和表达式攻略
C语言是一门计算机编程语言,基本运算和表达式是C语言编程中的基础知识点。在学习这一部分内容时,需要掌握以下知识点:
- 基本运算符
- 表达式的运算顺序
- 数据类型的转换
下面我们来一步步了解这些知识点。
基本运算符
在C语言中,基本运算符包括算术运算符、关系运算符、逻辑运算符和位运算符。
算术运算符
算术运算符包括加(+)、减(-)、乘(*)、除(/)和取模(%)。其中加减乘除的用法都很简单,在此不再赘述,下面介绍一下取模运算符。
取模运算符用于求余数,例如:7 % 3
的结果为 1,表示 7 除以 3 得余数 1。
关系运算符
关系运算符用于比较两个值的大小关系,包括等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)。
逻辑运算符
逻辑运算符包括与(&&)、或(||)和非(!)三种。其中与和或的含义和日常生活中一样,非则是反转运算结果。
位运算符
位运算符是对二进制数据进行的运算,包括按位取反(~)、按位与(&)、按位或(|)、按位异或(^)和左右移动(<<、>>)。
表达式的运算顺序
当表达式中包含多个运算符时,需要注意它们的优先级和结合性。
优先级是指哪个运算符先执行,结合性是指同一级别的运算符的计算顺序。
下表是C语言中运算符的优先级和结合性,优先级从高到低排列:
运算符 | 描述 | 结合性 |
---|---|---|
() | 括号 | 左 |
[]、.、-> | 数组、结构体的成员 | 左 |
++、-- | 前缀自增自减、后缀自增自减 | 左 |
+、- | 正负号 | 右 |
!、~ | 非 | 右 |
*、/、% | 乘、除、求余 | 左 |
+、- | 加、减 | 左 |
<<、>> | 左右移 | 左 |
<、<=、>、>= | 关系运算符 | 左 |
==、!= | 相等、不等 | 左 |
& | 按位与 | 左 |
^ | 按位异或 | 左 |
| | 按位或 | 左 |
&& | 逻辑与 | 左 |
|| | 逻辑或 | 左 |
?: | 三元运算符 | 右 |
=、+=、-= | 赋值运算符 | 右 |
需要注意的是,对于同一级别的运算符,C语言中的计算顺序通常是从左到右。
数据类型的转换
在进行基本运算和表达式计算时,需要注意数据类型的转换。C语言数据类型的转换可以分为自动类型转换和强制类型转换。
自动类型转换
当两种不同数据类型的值在表达式中同时出现时,需要进行自动类型转换,以使它们的类型相同。C语言自动类型转换的规则如下:
- 如果两个值类型不同,会先将其中一种值转换为另一种值的类型,然后再进行运算。
- 转换的过程中,将低位数据类型自动转换成高位数据类型。
- 整形类型和浮点类型同时出现时,整形类型会自动转换成浮点类型。
- char类型和short类型会先自动转换成int类型再进行运算。
强制类型转换
强制类型转换是将一个数据类型强制转换成另一种数据类型。强制类型转换可以使用类型转换符(type cast operator)进行,类型转换符是一对括号,括号里放上需要转换成的数据类型,例如:int a = (int)1.23;
表示将 1.23 转换成 int 类型。
需要注意的是,强制类型转换可能会导致精度损失和数据溢出等问题,因此在进行强制类型转换时需要格外小心。
示例说明
示例一:算术运算符的使用
#include <stdio.h>
int main()
{
int a = 3, b = 4;
printf("a + b = %d\n", a + b); // 7
printf("a - b = %d\n", a - b); // -1
printf("a * b = %d\n", a * b); // 12
printf("a / b = %d\n", a / b); // 0
printf("a %% b = %d\n", a % b); // 3
return 0;
}
在这个示例中,定义了两个整数 a 和 b,并使用了加、减、乘、除和取模等算术运算符对它们进行了运算,并使用 printf 函数输出了运算结果。
示例二:类型转换的注意事项
#include <stdio.h>
int main()
{
int a = 10, b = 3;
float c = 1.5, d = 2.5;
printf("a / b = %d\n", a / b); // 3
printf("c + d = %f\n", c + d); // 4.000000
printf("a / c = %f\n", a / c); // 6.666667
printf("a / (int)c = %d\n", a / (int)c); // 6
printf("a + c = %f\n", a + c); // 11.500000
return 0;
}
在这个示例中,定义了几个变量,包括整型变量 a 和 b,浮点型变量 c 和 d。在表达式中,可能会出现整型型和浮点型相互调用的情况,需要注意数据类型的转换问题。例如,在 a / c
中,c 会自动转换成 float 类型,a 也会自动转换成 float 类型,导致结果是浮点型,这与预期的结果不同,需要使用强制类型转换 (int)c
将 c 转换成整数类型。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:初学C语言基本运算和表达式 - Python技术站