目录
前言
先说一下为什么本人鸽了这么久没更新,一方面是去年期末时比较忙,没有时间更新,再之后是本人太懒了,或者说专心摸鱼中(笑)
本系列的意义在于两点,一则是作为本人(一个编程初学者)的学习笔记记录,二则希望能对后来者提供一些帮助,因为本人也为新手,难免有些错误或讲述不清之处,恳请大家指出或提出建议,本人也会虚心修改。
本系列的目标是帮助一个编程初学者快速拥有简单的编程能力,能够自主完成洛谷入门级和部分普及级题目。
本节提要
本节我将向各位介绍转义字符是什么,常见的转义字符有哪些?以及操作符是什么?常用的操作符有哪些?内容量较前两节较多,但也还算适量,并且这些都是C语言的基础,灰常简单
一、转义字符
1.什么是转义字符
首先我们先看看百度是怎么解释的?
官方的解释往往都不太好理解,让我们翻译成口语看看,转义字符就是将将原本的字符加上“\”,使它的作用(意义)与原本不同,从而形成的新的字符。
但是我们不用关注这些,我们主要看看有哪些字符被“转义了”,它们的新意义是什么。
2.常见的转义字符
- \?: 在有些国家的键盘无法输入一些字符,为此使用三字符系列转义字符,\?就是用于避免编译器将???三字符系列转义字符(也就是让?能正常输出)
- \a:警告字符,用于发出蜂鸣警告
- \r:表示回车,回到当前行的行首,而不会换到下一行,如果接着输出的话,本行以前的内容会被逐一覆盖(光标在该行的头部)
- \':用于表示'
- \b:退格符,将光标退回前一个字符,但不会删除光标位置的字符,如果后边有新的字符,将覆盖退回的那个字符
- \t:水平制表符,将光标后移一个tab(即输出8个空格)
- \":用于表示"
- \f:进纸符,即换页
- \v:垂直制表符,使其后方的字符从下一行开始输出,且开始的列数为“\v”前一个字符所在列的后面一列
- \\:用于表示\\,防止其和其他字符被理解为转义字符,比如我们想输出"\a",但直接printf("\a");会被理解为发出蜂鸣警告,所以应该写为printf("\\a");
- \n:换行,使其后方的字符从下一行开始输出(顶格)
二、操作符
1.组成
操作符(运算符)是说明特定操作的符号 ,它是构造C语言表达式的工具
2.常用操作符
1.算术操作符
- + :用于将两个数相加
- - :用于将两个数减
- * :用于将两个数相乘
- / :用于将两个数相除(如果操作数都是整形,会自动向下取整)
- % :用于将两个数取余(数)
这里我们只着重说明一下%。首先,%只能用于两个整形间取余数(毕竟如果可以用小数表示,那么就不会出现余数嘛);其次这里的取余与数学上的取余存在一定的差别,数学上的取余取出的数一定是正数,但在C语言中对负数取余得到的就是负数,所以如果我们想要对负数取余得到正确的结果,那么我们应该这样写:(n%m+m)%m(这里假设负数n对m取余)。这将会在之后写算法题时常常用到
2.移位操作符
- >> : 左移操作符,将作用数的二进制左移一位,缺位补0(可以达到*2的效果)
- << :右移操作符,将作用数的二进制右移一位(可以达到/2的效果)、
下面我们以<<举个例子
为什么呢?
3.位操作符
- & :按位与,对两个操作数的二进制进行与(两个操作数对应位同1才1,有0得0)
- | :按位或,对两个操作数的二进制进行或(两个操作数对应位有1得1,同0才0)
- ^ :按位异或,对两个操作数的二进制进行异或(两个操作数对应位相同得1,不同得0)
下面举几个例子(我已经尽量对齐了,要怪就怪CSDN吧)
若有 a 0000 0000 0000 0000 0000 0000 0000 1010
b 0000 0000 0000 0000 0000 0000 0000 0010
a&b = 0000 0000 0000 0000 0000 0000 0000 0010
a|b = 0000 0000 0000 0000 0000 0000 0000 1010
a^b = 1111 1111 1111 1111 1111 1111 1111 0111
4.赋值操作符
- = :将后操作数的值赋给前操作数,如:a=b就是把b的值赋给a(令a等于b)
- += :如a+=b,等价于a=a+b
- -= :如a-=b,等价于a=a-b
- *= :如a*=b,等价于a=a*b
- /= :如a/=b,等价于a=a/b
- %= :如a%=b,等价于a=a%b
- >>= :如a>>=b,等价于a=a>>b
- <<= :如a<<=b,等价于a=a<<b
- &= :如a&=b,等价于a=a&b
- |= :如a|=b,等价于a=a|b
- ^= :如a^=b,等价于a=a^b
5.单目操作符
- ! :逻辑反操作(将真变为假,将假变为1)
- - :负值
- + :正值
int a = 10; //正值 int b = -10; //负值
- sizeof :求操作数的类型长度(单位:字节)
- ~ :对一个数的二进制按位取反
- -- :前置、后置--
- ++ :前置、后置++
int a = 5; int b = a++; //此时a=6,b=5 前置++:先使用,后++ int c = ++a; //此时a=6,c=6 后置++:先++,后使用
- & :取地址
- * : 解引用操作符
int a = 10; int *pa = &a; *pa = 20; //解引用
- (类型) :强制类型转换(将一种类型临时转为另一种类型)
double a; int b=(int)a;//将double转化为int
6.关系操作符
- > :“大于”
- < :测试“小于”
- >= :测试“大于等于”
- <= :测试“小于等于”
- != :测试“不等于”
- == :测试“等于”
注意:=在C语言中是将后操作数的值赋给前操作数,等于是==,这是新手常犯的错误!!!
7.逻辑操作符
- && :逻辑与操作(只要有一个表达式为假便为假,不再执行后面的表达式)
- || :逻辑或操作(只要有一个表达式为真便为真,不再执行后面的表达式)
注意:这两种操作符在之后会非常经常用到,一定要会!!!
8.条件操作符(三目操作符)
- exp1 ? exp2 : exp3 :若表达式1(exp1)为真则返回表达式2(exp2),否则返回表达式3(exp3)
int a = 5; int b = 9; int max = (a>b) ? a : b;//max最终等于9 //解释:语句的意思是如果a>b,则max = a;否则max = b,而a是小于b的
9.逗号表达式
- exp1, exp2, exp3, ..., expN :用逗号隔开的表达式,从左往右依次执行。整个表达式的结果为最后一个表达式的结果。
int a = 1, b = 2; int c = (a>b,a=b+10,a,a+1); //结果为13
10.下标引用,函数调用和结构体成员
- [] :下标引用操作符,有两个操作数(数组名和索引值)
- () : 函数调用操作符,有一个或多个操作数(函数名和参数)
- . : 结构体对象.成员名
- -> : 结构体指针->成员名
此部分涉及指针(C语言最难的部分),故而不再细解,如果之后我们讲到指针,可能会进行解说
三、推荐练习
无,今天的量已经很多了,并且本章内容也不适合做题,所以大家请以复习和记忆为主,是不是很开心?
四、下节预告
下一节中,我将会向大家介绍本节中提到的C语言中的几种常见的关键字。