一、转义字符
转义字符是指ASCII码表中,用于表示那些常规输入中难以直接输入或具有特殊含义的字符。
它通常以反斜杠“\”开头,后面跟一个或多个字符,组合起来构成特定的意思,比如:
\n: 表示换行;
\t:水平制表,携带前方字符与\t后字符空8个字节,若前方字符大于8个字符不到16个,将携带8个字符后的内容与\t后字符空8个;
\b:退格,\b后面字符覆盖前面内容,有几个\b就覆盖前面几个字符;
\r:回车,将光标移至最左端,将\r后面内容覆盖起始字符;
\\:表示反斜杠“\”,以防被识别为转义字符;
\’:代表单引号;
\“:代表双引号;
\a:电脑响一下;
\ddd:1到3位八进制数所代表的字符;
\xhh:1到2位十六进制数所代表的字符
还有其他的使用方式,具体如下
二、变量赋初值
程序中常需要对一些变量先预设初值,c语言允许在定义变量的同时使变量初始化,例如
int a = 1 ,直接赋值;若先定义int a ,此时a为随机数,再定义 a = 1,此时为a赋值为1。
int a = 1;表示初始化,即在为a开地址空间时将数值填完。一个变量只能被初始化一次,可以被多次赋值。除整型外,浮点型和字符型均可被初始化。
int a, b, c = 5表示则对c完成初始化,c的初值为5,a与b仍为随机数。同时也不能写为int a = b = c = 5,可以写为int a = 3, b = 3, c = 3.
三、算数运算符
3.1基本算数表达式
1. 加法 + 如 3 + 5;
2. 减法 - 如 3 - 4;
3.乘法 * 如 7 * 5;
4.除法 / 如 5 / 3;
5.求余 % 如 20 % 3
其中两个整型相加结果为整型,两个整型相除结果为整型,舍去小数部分。求余则只允许整型或与整型相兼容的类型,求余结果与左操作数相关(正负)。编译器只做类型的检查。
求余同样可以用于随机数的生成,下面是一段【50,99】之间的随机数生成代码
头文件引用了<stdlib.h>和<time.h>,random表示随机数的生成,srandom表示种子,定义time则是每秒生成不同的随机数,利用对变量t对50求余加50,得到随机数【50,99】。
3.2运算符的优先级
c语言规定了运算符的优先级和结合性。在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。具体优先级如下(从上到下为优先执行)
如果c语言的一个运算符两侧数据类型不同,则会先进行转换,然后进行运算,换算规则如下。
其中,横向箭头表示必定的转换,例如char,short都会先转换为int,float会转换为double型;纵向的箭头自下向上优先级增高,在运算中低优先级的数据类型会转换为高优先级的数据类型,例如int与long同时运算时,int会转变成long型,这种混合运算中的转换我们称之为隐式转换。
同时,出来在混合运算时进行转换之外,我们也能够进行自发的转换,如在变量前增加 (x)a,x表示我们想要转换的类型,加完后进行隐式转换,这种转换我们称之为显性转换,又称强制类型转换,该转化具有临时性。
i + j; 表示语句,
i + j 表示表达式
输出i + j时,i + j 叫做匿名变量,又称临时变量,是指程序执行中未定义的可改变的量,const int i 值恒定,属于只读变量。等号“=”左边的值称为左值,一般为变量;右边的值称为右值,一般为常量。匿名变量均为右值,const属于左值。左值特点为 localable 能被定位的,右值特点为 readable 只读的。
3.3 自增 ++i 和 i++
++i 先加后用 在i的空间内进行加法运算
i++ 先用后加 为i开辟匿名变量(相当于复制到另一个地址),表达式此时未加,而原本的空间内进行加法运算。
自增运算符和自减运算符只能用于变量,而不能用于常量和表达式。
四、赋值运算符
4.1概念
赋值符号“=”就是赋值运算符,他的作用是将一个数据赋给一个变量。
4.2优先级
i = i + 10 可以写成 i += 10
4.3当赋值两端类型不匹配
double = int 无事发生
int = double 小数截断,double属于双精度浮点数型,int属于整型,小数部分被舍弃
short = int 高位阶段 int地址为4个字节,short为两个字节,高字节位丢失
int = short 高位字节产生空洞,补充规则位符号位扩展,短数据类型符号位为0时,长数据类型补0;反之补F;若为unsigned 无符号位,长数据类型补0。