转义字符:
\n换行
\t水平制表 空七格
\b退格
\r回车
\f换页
\\代表字符“\”
\'代表字符单引号字符‘
\"代表双引号字符“
\ddd代表八进制字符
\xhh代表十六进制字符
算术运算:
+
-
*
\
%取余
++
--
运算符:表达式由运算符和运算数构成字符序列
1+2//所有的表达式都是有结果的(值)
//表达式一定是有数据类型的
各种数值型数据之间的混合运算:
在进行运算时,不同类型的数据要先转换成相同类型的数据进行计算。
从右向左为必转,
从下到上:低精度数据类型向高精度数据类型转换。
10+‘a’+1.5-8765.1234*‘b’
10+‘a’+1.5-(8765.1234*‘b’)//优先级 乘法优先级为1级
(( (10 + ‘a’) +1.5 ) - (87654.1234*‘b’))//结合性 在计算机中,计算是同级一步一步结合运算
int char必转int
int int float必转double double =结果为double型
/ 除法:1.除数不能为0
2.整型数相除,相当于整除,保留整数
强制计算eg:强制整形 (int)(123.456)=123
编译时问题:
错误:语法错误
警告:语法不合适
求余运算(模运算): a%b=余数
1.浮点型不能做求余运算
2.求余运算 第二操作数不能为0
3.
eg:判断一个数是奇数还是偶数? a%2=1时a为奇数
随机数的产生:
种子在每次启动计算机时是随机的,但是一旦计算机启动以后它就不再变化了;
rand (random随机数)用法:int rand (void)
srand(seed random重新播种)用法:srand (time(NULL))
++//自加
--//自减
i++或++i单独出现时为自加,结果一样 i++比++i占的存储空间多
i++//先用(表达式的结果) 后加i
++i//先加后用
lvalue(left value)//左值 能放在左边的量
int a;
a = 10;
constant//常量
const
const int a = 10;//只读变量 只能读取,不能改变
lvalue(left value)//左值,可定位的,看能不能被定位。
左值是对应内存中有确定存储地址的对象的表达式的值,而右值是所有不是左值的表达式的值。一般来说,左值是可以放到赋值符号左边的变量。
但能否被赋值不是区分左值与右值的依据。比如,C++的const左值是不可赋值的;而作为临时对象的右值可能允许被赋值。左值与右值的根本区别在于是否允许取地址&运算符获得对应的内存地址。
能取到地址就是左值,取不到地址就是右值 用%p取地址(pointer指针)
表达式,匿名变量//都是右值
i+++++i //贪心原则 从左至右逐个字符的扫描表达式,看这些字符能否,尽可能多的结合成c的运算符
i ++ ++ + i
i++ ++ +i
(((i++)++) + i) i++不能作为左值,而++i可以
赋值运算:
int a;
a = 10;
(a=(b=(c=1)))
+=
-=
*=//赋值运算
a += 1 // a = (a + 1) +运算的优先级为1级比赋值运算级别高
逗号运算:
形式:表达式1,表达式2,......,表达式n 运算的优先级最低