继续上回要说的常量
一.常量主要是数字常量、字符常量、字符串常量、宏定义常量、转义字符。
我们先来看下转义字符:
转义字符是C语言中表示字符的一种特殊形式。通常使用转义字符表示ASCII码字符集中不可打印的控制字符和特定功能的字符,如用于表示字符常量的单撇号( ''),用于表示字符串常量的双撇号( ")和反斜杠( \)等。转义字符用反斜杠\后面跟一个字符或一个八进制或十六进制数表示。
符号名称 |
表示方法 |
换行符 |
\n |
水平制表符 |
\t |
垂直制表符 |
\v |
退格符 |
\b |
回车键 |
\r |
进纸键 |
\f |
响铃符 |
\a |
反斜杠键 |
\\ |
问号 |
\? |
单引号 |
\’ |
双引号 |
\” |
字符串是由一对双引号括起来的零个或者多个字符序列。它可以包括空格符,转义字符或其他字符,与字符不同的地方在于:字符是单引号,字符串双引号,存储方式不一样(字符串以\0结尾),所以一个”m”的字符串占2个字节,而不是一个。
整数常量可以用十进制、八进制或十六进制表示,例如:
34 010 0x10
八进制数的前面有个0,就是让编译器解析为八进制数,所以八进制数只能有0~7。十六进制则以0x开头,可以使用0~9和abcdef或ABCDEF。同时,整数后面可以指定是长整型和无符号类型,例如:130L,130UL
浮点常量可以写成小数形式,也可以写成科学计数法的形式,默认为double类型。我们在使用科学计数法的时候,要在小数后面加E(e),如果在指定为float则要在数后面加F(f),如果指定长双精度则加DL(dl)例如:
3.14159 3.14159f 3.14e+8 3.14159DL
符号常量,除了直接用文字表示常量外,也可以使用常量命名,这就是符号常量。在使用之前一定要声明而且要初始化并且不能改变(要不就不是常量了@@),使用形式如下:
const 数据类型说明符常量名 = 常量值;
数据类型说明符 const 常量名 = 常量值;
例如:
Const float pi=3.1415926f;
二.表达式
C++中含有很多运算符,运算符和变量,函数一起组成表达式
运算符 |
符号 |
算术运算符 |
+ - * / % |
逻辑运算符 |
&& || ! |
关系运算符 |
== != < > <= >= |
位运算符 |
& | ! ^ << >> |
赋值运算符 |
= |
自增自减运算符 |
++ __ |
条件运算符 |
?: |
逗号运算符 |
, |
其他 |
& * :: |
算术运算符的用法:
运算符 |
功能 |
用法 |
+ |
加 |
Expr1 + Expr2 |
- |
减 |
Expr1 - Expr2 |
* |
乘 |
Expr1 * Expr2 |
/ |
除 |
Expr1 / Expr2 |
% |
取余 |
Expr1 % Expr2 |
注意的是,%用于求余,只能用在整数和字符型操作数上,不能用于浮点数
赋值运算符:
赋值运算符=,将一个数的值传给一个变量。
Int a=3,b=4;
b=b*4; //赋值过程
b=a*1.5f; //类型转换
当赋值符号的左右两边类型不同时,编译器会把右边的类型转化成左边的类型。
增量运算符:
递增运算符++,就是使变量的值自增1。递减运算符,就是使变量的值自减1。
但是放在变量前和变量后是会有不一样的效果哦:
运算符 |
功能 |
++i |
i自增1后再参与其他运算,++i的值为自增后的值 |
--i |
i自减1后再参与其他运算,--i的值为自减后的值 |
i++ |
i先参与运算后,i的值再自增1,i++为自增前的值 |
i-- |
i先参与运算后,i的值再自减1,i++为自减前的值 |
例如
#include <iostream>
using namespace std;
void main()
{
int i=8;
cout<<++i<<endl;
cout<<--i<<endl;
cout<<i++<<endl;
cout<<i--<<endl;
cout<<-i++<<endl;
cout<<-i--<<endl;
}
结果是:9 8 8 9 -8 -9
关系运算符:
主要是用于比较2个数的大小,返回结果为BOOL型。
运算符 |
功能 |
用法 |
< |
小于 |
Expr1 < Expr2 |
<= |
小于等于 |
Expr1 <= Expr2 |
> |
大于 |
Expr1 > Expr2 |
>= |
大于等于 |
Expr1 >= Expr2 |
== |
等于 |
Expr1 == Expr2 |
!= |
不等于 |
Expr1 != Expr2 |
哈哈,这里突然想到一个问题,在刚开始学习的时候,我总是把等于写成=,所以导致了很多错误,在c++中的等于是==,一定要注意哦。所以我们在拿一个变量和一个常量值进行判断的时候,最后把常量写在前面,这样能避免一些错误。
int i=8;
如果8=i 这样的话,编译器会报错,给我门很好的提示,但是i=8就不会出错。而8==i这个语法上也是没问题的。
逻辑运算符:
逻辑运算符用于逻辑运算,包含:&&,||,!。逻辑非( ! ) 只有一个操作数,只有逻辑与(&&)的2个操作数都为true时,结果才是true。逻辑或(||)只要有一个操作数为true结果就为true。
运算符 |
功能 |
用法 |
! |
逻辑非 |
!Expr1 |
&& |
逻辑与 |
Expr1 && Expr2 |
|| |
逻辑或 |
Expr1 || Expr2 |
位操作运算符:
运算符 |
功能 |
用法 |
~ |
按位非 |
~ Expr1 |
<< |
左移 |
Expr1 << Expr2 |
>> |
右移 |
Expr1 >> Expr2 |
& |
按位与 |
Expr1 & Expr2 |
^ |
按位异或 |
Expr1 ^ Expr2 |
| |
按位或 |
Expr1 | Expr2 |
&= |
按位与赋值 |
Expr1 &= Expr2 |
^= |
按位异或赋值 |
Expr1 ^= Expr2 |
|= |
按位或赋值 |
Expr1 |= Expr2 |
按位非,就是将1换成0,0换成1,例如:01111111,按位非后是10000000
左移和右移是将第一个操作数中每一位向左或向右移动若干位,移动的位数为第二个操作数,移动后,空缺的地方补0
按位与,要在每个位,如果两个操作数对应位都是1结果该位是1,否则就是0,例如:
0101&1101的结果是0101
按位异或,在每个位,如果两个操作数的相应位不相同,那么就是1,否则是0,例如:0101^1101的值为1000
按位或,在每个位,如果2个操作数对应位都是0,结果是0,否则都为1,例如:0101|1101的结果是1101
例外:按位与赋值,按位异或赋值,按位或赋值可表示成:
Expr1 &= Expr2 相当于Expr1= Expr1 & Expr2
Expr1 |= Expr2 相当于Expr1= Expr1 | Expr2
Expr1 ^= Expr2 相当于Expr1= Expr1 ^ Expr2
今天就暂时到这里吧,下回将会继续运算符,并开始各种程序语句。