今天复习C语言的基础运算符时,以下是一些常见的运算符及其相关知识:
-
算术运算符:
+
:加法运算符,用于执行两个值的相加操作。-
:减法运算符,用于执行两个值的相减操作。*
:乘法运算符,用于执行两个值的相乘操作。/
:除法运算符,用于执行两个值的相除操作。%
:取模运算符,用于计算两个值相除的余数。
-
赋值运算符:
=
:赋值运算符,用于将右侧的值赋给左侧的变量。
-
比较运算符:
==
:等于运算符,用于比较两个值是否相等。!=
:不等于运算符,用于比较两个值是否不相等。>
:大于运算符,用于比较左侧的值是否大于右侧的值。<
:小于运算符,用于比较左侧的值是否小于右侧的值。>=
:大于等于运算符,用于比较左侧的值是否大于或等于右侧的值。<=
:小于等于运算符,用于比较左侧的值是否小于或等于右侧的值。
-
逻辑运算符:
&&
:逻辑与运算符,用于检查两个条件是否同时满足。||
:逻辑或运算符,用于检查两个条件是否至少有一个满足。!
:逻辑非运算符,用于取反一个条件的值。
-
递增和递减运算符:
++
:递增运算符,用于将变量的值增加1。--
:递减运算符,用于将变量的值减少1。
-
位运算符:
&
:按位与运算符,用于对两个操作数执行按位与操作。|
:按位或运算符,用于对两个操作数执行按位或操作。^
:按位异或运算符,用于对两个操作数执行按位异或操作。<<
:左移运算符,用于将一个数的二进制位向左移动指定的位数。>>
:右移运算符,用于将一个数的二进制位向右移动指定的位数。
在使用不同数据类型进行计算时,确实有一些注意事项。下面是一些常见的注意事项以及相应的示例代码来说明原因:
注意事项
-
整数相除得到整数:
当整数和浮点数进行相除运算时,结果会被截断为整数。这是因为整数除以整数的结果将永远是整数,即使结果本应是一个小数。int a = 10; int b = 3; int result = a / b; printf("%d\n", result); // 输出结果为 3
-
取模运算只适用于整数:
取模运算(%
)只适用于整数类型的操作数。它计算两个数相除后的余数。如果操作数是浮点数,编译器将会报错。int a = 10; int b = 3; int result = a % b; printf("%d\n", result); // 输出结果为 1
-
混合数据类型的隐式类型转换:
当不同数据类型的操作数进行运算时,C语言会进行隐式类型转换以匹配操作数的类型。在某些情况下,转换可能会导致精度丢失或结果产生意外的行为。int a = 10; double b = 3.5; double result = a / b; printf("%lf\n", result); // 输出结果为 2.857143
在上述代码中,我们将
a
和b
分别赋值为整数和浮点数。当我们将它们相除并将结果赋给一个双精度浮点类型的变量result
时,C语言会进行隐式类型转换,将a
转换为浮点数。这样,我们得到了预期的带小数的结果。 -
运算优先级:
int result = 5 + 3 * 2;
printf("%d\n", result); // 输出结果为 11
在C语言中,运算符的优先级决定了表达式中运算符被执行的顺序。
下面是常见运算符的优先级顺序,从高到低:
- 括号:
()
,括号内的表达式优先计算。 - 单目加(正号)和单目减(负号):
+
,-
,正号和负号。 - 乘法、除法和取模:
*
,/
,%
,乘法、除法和取模运算。 - 加法和减法:
+
,-
,加法和减法运算。 - 移位运算:
<<
,>>
,左移和右移运算。 - 关系运算符:
<
,<=
,>
,>=
,关系比较运算符。 - 相等运算符:
==
,!=
,等于和不等于运算符。 - 按位与运算:
&
,按位与运算。 - 按位异或运算:
^
,按位异或运算。 - 按位或运算:
|
,按位或运算。 - 逻辑与运算:
&&
,逻辑与运算。 - 逻辑或运算:
||
,逻辑或运算。 - 条件运算符:
? :
,条件表达式。 - 赋值运算符:
=
,+=
,-=
等,赋值运算符。 - 逗号运算符:
,
,逗号运算符。
在表达式中,具有更高优先级的运算符会首先执行,然后才是具有较低优先级的运算符。如果有相同优先级的运算符,则根据结合性来决定执行顺序。例如,大多数运算符都是从左向右结合的,除了赋值运算符和条件运算符等特殊情况。