本博客主要内容为 “小甲鱼” 视频课程《带你学C带你飞》【第一季】 学习笔记,文章的主题内容均来自该课程,在这里仅作学习交流。在文章中可能出现一些错误或者不准确的地方,如发现请积极指出,十分感谢。
也欢迎大家一起讨论交流,如果你觉得这篇文章对你有所帮助,记得评论、点赞哦 ~(。・∀・)ノ゙
C 语言通过提供大量的运算符来支持我们对数据进行处理,例如将一个值存放到变量中,使用的是赋值运算符(=);对字符串中的某个字符进行索引,使用方括号([])作为下标运算符实现。本篇博文将主要介绍算术运算符、关系运算符和逻辑运算符这三种运算符。
1 . 算术运算符
算术运算符就是做加减乘除运算的运算符了,常见的运算符有如下这些
其中有三点需要注意:
(1) 整数间的除法采用的是取整的方式,而不是四舍五入的方式,如 5/3 = 1
(2) 浮点数间的除法则能获得一个相对逼近结果的值,如5.0/3.0 = 1.666667
(3) 求余运算符要求 % 两边的操作数都要是整数,其结果也是整数。
1.1 什么是 “目”
在上面的表格中有的运算符是双目运算符,有的运算符是单目运算符,那什么是 “目” 呢?如下图所示
其中的加号就是运算符,被运算符作用的运算对象称之为操作数,比如 1 + 2,那么 1 和 2 就是被加法运算符(+)作用的两个操作数。我们说一个运算符是双目运算符还是单目运算符,就是看它有多少个操作数。所以很明显,除了正负号运算符,剩下的都是单目运算符。
1.2 表达式
用运算符和括号将操作数连接起来的式子,我们称之为表达式。比如说1+2
,'a' + 'b'
,1 + 2 + -1 - 9%5
,这些都是表达式。
对于较为复杂的表达式我们应该考虑运算符的优先级和结合性,大部分的运算符和我们的认识一致,比如先乘除后加减,有括号的先算括号内的。但是也会有一些较为特殊的运算符需要我们注意下计算的顺序,这里我们给出一个参考,可以快速查看运算符号的优先级。顺便在这里我也安利下我常用的方法,很简单!就是遇到不确定的优先级直接用括号把想优先计算的括起来~
1.3 类型转换
当一个运算符的几个操作数类型不同时,编译器需要将它们转换为共同的某种数据类型,才能进行运算。通常情况下,编译器会将占内存比较小的操作数,先转换为与占内存较大的操作数的相同类型,然后再进行运算。这样做的目的就是为了确保计算的精确度。
除了编译器帮你自动转换不同类型的操作数之外,C 语言还允许你强制转换操作数的数据类型。做法就是在操作数的前边用小括号将目标数据类型括起来。
1.4 举例说明
第一个程序是关于运算优先级的示例
#include <stdio.h>
#include <math.h>
int main()
{
int i, j, k;
i = 1 + 2;
j = 1 + 2 * 3;
k = i + j + -1 + pow(2, 3); // 3 + 7 + (-1) + 8
printf("i = %d\n", i);
printf("j = %d\n", j