继续上回要说的常量
一.常量主要是数字常量、字符常量、字符串常量、宏定义常量、转义字符。
我们先来看下转义字符:
转义字符是C语言中表示字符的一种特殊形式。通常使用转义字符表示ASCII码字符集中不可打印的控制字符和特定功能的字符,如用于表示字符常量的单撇号(''),用于表示字符串常量的双撇号(")和反斜杠(\)等。转义字符用反斜杠\后面跟一个字符或一个八进制或十六进制数表示。
**符号名称** | **表示方法** |
换行符 | \n |
水平制表符 | \t |
垂直制表符 | \v |
退格符 | \b |
回车键 | \r |
进纸键 | \f |
响铃符 | \a |
反斜杠键 | \\ |
问号 | \? |
单引号 | \’ |
双引号 | \” |
字符串是由一对双引号括起来的零个或者多个字符序列。它可以包括空格符,转义字符或其他字符,与字符不同的地方在于:字符是单引号,字符串双引号,存储方式不一样(字符串以\0结尾),所以一个”m”的字符串占2个字节,而不是一个。
整数常量可以用十进制、八进制或十六进制表示,例如:
340100x10
八进制数的前面有个0,就是让编译器解析为八进制数,所以八进制数只能有0~7。十六进制则以0x开头,可以使用0~9和abcdef或ABCDEF。同时,整数后面可以指定是长整型和无符号类型,例如:130L,130UL
浮点常量可以写成小数形式,也可以写成科学计数法的形式,默认为double类型。我们在使用科学计数法的时候,要在小数后面加E(e),如果在指定为float则要在数后面加F(f),如果指定长双精度则加DL(dl)例如:
3.141593.14159f3.14e+83.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
usingnamespacestd;
voidmain()
{
inti=8;
cout<<++i<<endl;
cout<<--i<<endl;
cout<<i++<<endl;
cout<<i--<<endl;
cout<<-i++<<endl;
cout<<-i--<<endl;
}
结果是:9889-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
今天就暂时到这里吧,下回将会继续运算符,并开始各种程序语句。
个人网站http://www.ravedonut.com/
原文链接: https://www.cnblogs.com/panjiangfy/archive/2011/07/26/cxuexi4.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/29323
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!