1.变量赋初值
1. 定义时直接赋值
例如:int i = 10; 变量 i 初始化。
2. 先定义,后赋值
例如:int i ; i = 10; 给变量 i 赋初值。
2.C语言算术运算符和算术表达式
1.C语言运算符有以下几类
- 算术运算符:包括加(
+
)、减(-
)、乘(*
)、除(/
)、取余(%
)。 - 关系运算符:用于比较两个操作数的大小关系,包括大于(
>
)、小于(<
)、大于等于(>=
)、小于等于(<=
)、等于(==
)、不等于(!=
)。 - 逻辑运算符:包括逻辑与(
&&
)、逻辑或(||
)、逻辑非(!
)。 - 位运算符:对操作数按位进行操作,如按位与(
&
)、按位或(|
)、按位异或(^
)、左移(<<
)、右移(>>
)。 - 赋值运算符:包括简单赋值(
=
)和复合赋值运算符(如+=
、-=
、*=
、/=
等)。 - 条件运算符:也称为三目运算符(
? :
)。 - 逗号运算符:用逗号将多个表达式连接起来。
- 指针运算符:( * 和 & )
- 求字节数运算符:(sizeof)
- 强制类型转换运算符:((类型))
2.基本的算术运算符
-
加法运算符
+
:用于两个数相加。- 例如:
int a = 5 + 3;
,a 的值为 8 。 - 对于浮点数也同样适用,如
float a = 2.5 + 1.5;
,a 的值为 4.0 。
- 例如:
-
减法运算符
-
:实现两个数相减。- 比如:
int a = 8 - 3;
a 的值为 5 。 - 也能用于负数的运算,如
int a = 3 - 8;
,a 的值为 -5 。
- 比如:
-
乘法运算符
*
:执行两个数相乘。- 举例:
int a = 4 * 6;
,a 的值为 24 。
- 举例:
-
除法运算符
/
:- 当两个操作数都是整数时,结果为整数部分,舍去小数部分。例如:
int a = 7 / 2;
,a的值为 3 。 - 若操作数中有一个是浮点数,结果为浮点数。比如:
float a= 7.0 / 2;
,a的值为 3.5 。
- 当两个操作数都是整数时,结果为整数部分,舍去小数部分。例如:
-
取模运算符 或求余运算符
%
:计算两个整数相除的余数。- 例如:
int a= 9 % 4;
,a的值为 1 。 - 求余%要求两边数据与整型相兼容,最终结果与左操作数有关。
- 例如:
3.算术表达式和运算符的优先级与结合性
在算术表达式中,运算符的优先级决定了它们执行的先后顺序。优先级较高的运算符会先被执行。
C 语言中算术运算符的优先级从高到低依次为:
*
、/
、%
:这三个运算符具有相同的优先级,用于执行乘法、除法和取模(求余)运算。+
、-
:用于执行加法和减法运算,它们的优先级低于乘、除、取模运算符。
例如,在表达式 a + b * c
中,由于乘法运算符 *
的优先级高于加法运算符 +
,所以会先计算 b * c
的值,然后再将结果与 a
相加。
如果在一个运算对象两侧的运算符优先级相同,则按照运算符的结合性来确定运算顺序。算术运算符的结合性都是“自左向右”,即先左后右。例如,在表达式 a - b + c
中,先进行 a - b
的运算,然后再执行加 c
的运算。
以下是一个完整的 C 语言中运算符优先级和结合性的一览表:
优先级 | 运算符 | 名称或含义 | 使用形式 | 结合方向 | 种类说明 | ||||
---|---|---|---|---|---|---|---|---|---|
1 | () | 数组下标 | 数组名(常量表达式) | 从左到右 | 特殊运算符 | ||||
() | 圆括号 | (表达式)/函数名(形参表) | |||||||
. | 成员选择(对象) | 对象.成员名 | |||||||
-> | 成员选择(指针) | 对象指针->成员名 | |||||||
2 | - | 负号运算符 | -表达式 | 从右到左 | 单目运算符 | ||||
(类型) | 强制类型转换 | (数据类型)表达式 | |||||||
++ | 自增运算符 | ++变量名/变量名++ | 算术运算符,单目运算符 | ||||||
-- | 自减运算符 | --变量名/变量名-- | 单目运算符 | ||||||
* | 取值运算符 | *指针变量 | 指针运算符,单目运算符 | ||||||
& | 取地址运算符 | &变量名 | 单目运算符 | ||||||
! | 逻辑非运算符 | !表达式 | 逻辑运算符,单目运算符 | ||||||
~ | 按位取反运算符 | ~表达式 | 位操作运算符,单目运算符 | ||||||
sizeof | 长度运算符 | sizeof(表达式) | 求字节数运算符 | ||||||
3 | / | 除 | 表达式/表达式 | 从左到右 | 算术运算符,双目运算符 | ||||
* | 乘 | 表达式*表达式 | 双目运算符 | ||||||
% | 余数(取模) | 整型表达式%整型表达式 | 双目运算符 | ||||||
4 | + | 加 | 表达式+表达式 | 从左到右 | 双目运算符 | ||||
- | 减 | 表达式-表达式 | 双目运算符 | ||||||
5 | << | 左移 | 变量<<表达式 | 从左到右 | 位操作运算符,双目运算符 | ||||
>> | 右移 | 变量>>表达式 | 双目运算符 | ||||||
6 | > | 大于 | 表达式>表达式 | 从左到右 | 关系运算符,双目运算符 | ||||
>= | 大于等于 | 表达式>=表达式 | 双目运算符 | ||||||
< | 小于 | 表达式<表达式 | 双目运算符 | ||||||
<= | 小于等于 | 表达式<=表达式 | 双目运算符 | ||||||
7 | == | 等于 | 表达式==表达式 | 从左到右 | 双目运算符 | ||||
!= | 不等于 | 表达式!=表达式 | 双目运算符 | ||||||
8 | & | 按位与 | 表达式&表达式 | 从左到右 | 位操作运算符,双目运算符 | ||||
9 | ^ | 按位异或 | 表达式^表达式 | 从左到右 | 双目运算符 | ||||
10 | ` | ` | 按位或 | 表达式 | 表达式 | 从左到右 | 双目运算符 | ||
11 | && | 逻辑与 | 表达式&&表达式 | 从左到右 | 逻辑运算符,双目运算符 | ||||
12 | ` | ` | 逻辑或 | 表达式 | 表达式 | 从左到右 | 双目运算符 | ||
13 | ?: | 条件运算符 | 表达式1? 表达式2:表达式3 | 从右到左 | 条件运算符,三目运算符 | ||||
14 | = | 赋值运算符 | 变量=表达式 | 从右到左 | 赋值运算符 | ||||
/= | 除后赋值 | 变量/=表达式 | |||||||
*= | 乘后赋值 | 变量*=表达式 | |||||||
%= | 取模后赋值 | 变量%=表达式 | |||||||
+= | 加后赋值 | 变量+=表达式 | |||||||
-= | 减后赋值 | 变量-=表达式 | |||||||
<<= | 左移后赋值 | 变量<<=表达式 | |||||||
>>= | 右移后赋值 | 变量>>=表达式 | |||||||
&= | 按位与后赋值 | 变量&=表达式 | |||||||
^= | 按位异或后赋值 | 变量^=表达式 | |||||||
` | =` | 按位或后赋值 | 变量 | =表达式 | |||||
15 | , | 逗号运算符 | 表达式,表达式,… | 从左到右 | 逗号运算符 |
4.强制类型转换运算符
一般形式为 (类型名)(表达式)
类型名有:double,int,float等。
5.自增、自减运算符
自增运算符(++
):
- 前置自增(
++变量
):先将变量的值增加 1,然后再使用变量的值进行其他运算。
展开过程
- 后置自增(
变量++
):先使用变量当前的值进行其他运算,然后再将变量的值增加 1。
展开过程
自减运算符(--
):
- 前置自减(
--变量
):先将变量的值减少 1,然后再使用变量的值进行其他运算。
展开过程
- 后置自减(
变量--
):先使用变量当前的值进行其他运算,然后再将变量的值减少 1。
前置++/--效率高于后置++/--。
3.不同数据类型间的混合运算
不同类型的数据在进行混合运算时有一定的规则。例如,当进行+
、-
、*
、/
运算的两个数中有一个数为float
或double
型,结果将是double
型;如果int
型与float
或double
型数据进行运算,会先把int
型和float
型数据转换为double
型再进行运算;字符型数据与整型数据进行运算时,是把字符的 ASCII 代码与整数数据进行运算。
4.赋值运算符和赋值表达式
在 C 语言中,赋值运算符为 =
,用于将一个值赋给一个变量。
赋值表达式的一般形式为:变量 = 表达式 。
例如:int num = 10;
这里将整数 10 赋值给变量 num
。
赋值运算符具有以下特点:
-
赋值运算符的左边必须是一个变量,不能是常量或表达式(可取地址)。
-
赋值运算的执行过程是将等号右边表达式的值计算出来,然后赋给左边的变量(不可取地址)。
-
const + 变量(只读,但可取地址)
除了简单的赋值运算符 =
,还有复合赋值运算符,如 +=
、 -=
、 *=
、 /=
、 %=
等。
混合赋值:
长装短里,舍掉高位;
短装长里,放在地位,高位符号位扩展(有符号),补0(无符号)。
标签:运算,变量,双目,C语言,运算符,表达式,赋值 From: https://blog.csdn.net/lijiaweixx/article/details/140501691