这些只是本蒟蒻的一些见解,还望各位神犇积极评论提出宝贵意见,万分感谢!!!!!!!!!!
第二篇啊,给点关注吧,以后会写更多的!!!!!!!!!!!!!!!!!!!!!!!!!
本章只是对上一章的补充,上一章提到了赋值语句,现在我们来学一点别的
赋值表达式的基本模板是:类型名 变量=所需赋的值;但是如果需要赋值多个,就显得有些麻烦了,于是可以:类型名 变量=变量=变量......(变量个数不限)所需赋的值,如:long a=b=2(或c+d)。
还有一种用来转换两个变量的方法:1.设一个变量,例如temp;2.temp=a(所需换的变量);a=b(另一个所需换的变量);b=temp;
有一点需要注意:如果两边的变量的类型不同,那么右边的变量类型自动转变为左边的。
那么,类型是什么?变量是什么?他们又是如何转化的呢?
常量,与变量基本相似,是指在程序中使用的一些具体的数、字符。在程序运行过程中,其值不能被更改。如123,145.88,'m',TRUE等。
1、整型常量:如3、-5、0等。
整型常量是表示整数的常量。有三种表示形式:
1)十进制形式。如99、-1。
2)八进制形式。以数字0打头,由0-7构成,如012,表示八进制整数12,即12(8)。
3)十六进制形式。以0x打头,如0x12A,表示十六进制整数12A,即12A(16)。
2、实型常量:如3.1、-6.1E+2(科学记数法)。
3、字符常量:是用单引号括起来的字符,如 'k' 、'5' 、'%'。
注意:'a'与"a"表示的含义是不同的,'a'表示一个字符常量,"a"表示一个字符串。
变量名又该如何定义呢?
用一个合法的标识符代表一个变量。如n,m,rot,total 等都是合法变量名。在程序中用到的变量要“先定义后使用”,变量名应遵循自定义标识符的命名规则,并建议使用“见名知义”的原则,即用一些有意义的单词作为变量名。在C++语言,变量名大小写有区别。
用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符。C++语言规定,标识符只能由字母(包含下划线“_”)开头,后面的字符可以是字母或数字。对于标识符的长度,不同的C++语言编译器有不同的规定,考虑到系统的可移植性,建议变量名的长度不要超过8个字符。例如:month、_age、s2为合法的标识符;m.k.jack、a<=b、9y为不合法的标识符。
接下来让我们来聊聊类型名
数据类型 |
定义标识符 |
占字节数 |
数值范围 |
数值范围 |
短整型 |
short [int] |
2(16位) |
-32768~32767 |
-215~215-1 |
整型 |
[long] int |
4(32位) |
-2147483648~2147483647 |
-231~231-1 |
长整型 |
long [int] |
4(32位) |
-2147483648~2147483647 |
-231~231-1 |
超长整型 |
long long [int] |
8(64位) |
-9223372036854775808~9223372036854775807 |
-263~263-1 |
无符号整型 |
unsigned [int] |
2(16位) |
0~65535 |
0~216-1 |
无符号短整型 |
unsigned short [int] |
2(16位) |
0~65535 |
0~216-1 |
无符号长整型 |
unsigned long [int] |
4(32位) |
0~4294967295 |
0~232-1 |
无符号超长整型 |
unsigned long long |
8(64位) |
0~18446744073709551615 |
0~264-1 |
数据类型 |
定义标识符 |
数值范围 |
占字节数 |
有效位数 |
单精度实型 |
float |
-3.4E-38~3.4E+38 |
4(32位) |
6~7位 |
双精度实型 |
double |
-1.7E+308~1.7E+308 |
8(64位) |
15~16位 |
长双精度实型 |
long double |
-3.4E+4932~1.1E+4932 |
16(128位) |
18~19位 |
布尔变量 |
bool |
真true或假false之一 |
1(8位) |
那么这些类型之间又怎么转换呢?
注意:必须要按箭头方向转换
总所周知,除了类型极多这一特点,C++语言还有一个更显著的特点,那就是运算符数量也极多,接下来就让我来介绍一下
1.算术运算符
用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
2.关系运算符
用于比较运算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种。
3.逻辑运算符
用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
4.位操作运算符
参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
5.赋值运算符
用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
6.条件运算符
这是一个三目运算符,用于条件求值(?:)。
7.逗号运算符
用于把若干表达式组合成一个表达式(,)。
8.指针运算符
用于取内容(*)和取地址(&)二种运算。
9.求字节数运算符
用于计算数据类型所占的字节数(sizeof)。
10.特殊运算符
有括号(),下标[],成员(->,.)等几种。
首先来介绍一下算术运算符
1、模运算符
求余的运算符“%”也称为模运算符,是双目运算符,两个操作数都是整型数。a%b的值就是a除以b的余数,5%2余数为1。其操作对象只能是整型数,而其他四种运算符对int,float,double,char都适用。
2、除法运算符
C++语言的除法运算符有一些特殊之处,即如果a、b是两个整数类型的变量或常量,那么a/b的值是a除以b的商。例如, 5/2的值是2,而不是2.5,而5.0/2或5/2.0的值是2.5。
3、自增自减运算符
自增、自减运算符用来对一个操作数进行加1或减1运算,其结果仍然赋予该操作数,而且参加运算的操作数必须是变量,而不能是常量或表达式。
1)自增运算符。例如,x++表示在使用x之后,使x的值加1,即x=x+1;++x表示使用x之前,先使x的值加1,即x=x+1。
2)自减运算符。例如,x--表示在使用x之后,使x的值减1,即x=x-1;--x表示使用x之前,先使x的值减1,即x=x-1。
4、复合算术赋值。例如,a+=1,相当于a=a+1; a+=b,相当于a=a+b。
还有关系运算符
关系运算符用于数值的大小比较。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种,它们都是双目运算符。
关系运算符运算的结果是整型,值只有两种:0或1,0代表关系不成立,1代表关系成立。例如,a=a>b;如果a大于b那么a的值重新赋值为1,否则为0
接下来是逻辑运算符
C++语言中提供了三种逻辑运算符:与运算(&&)、或运算(||)、非运算(!)。与运算符(&&)和或运算符(||)均为双目运算符。具有左结合性。 非运算符(!)为单目运算符,具有右结合性。逻辑运算符和其它运算符优先级的关系可表示如下:
按照运算符的优先顺序可以得出:
a>b && c>d等价于(a>b) && (c>d)
!b==c||d<a等价于((!b)==c)||(d<a)
a+b>c && x+y<b等价于((a+b)>c) && ((x+y)<b)
逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”来表示。其求值规则如下:
1.与运算&&参与运算的两个量都为真时,结果才为真,否则为假。例如,5>0 && 4>2,由于5>0为真,4>2也为真,相与的结果也为真。
2.或运算||参与运算的两个量只要有一个为真,结果就为真。 两个量都为假时,结果为假。例如:5>0||5>8,由于5>0为真,相或的结果也就为真
3.非运算!参与运算量为真时,结果为假;参与运算量为假时,结果为真。例如:!(5>0)的结果为假。
虽然C++编译在给出逻辑运算值时,以“1”代表“真”,“0 ”代表“假”。 但反过来在判断一个量是为“真”还是为“假”时,以“0”代表“假”,以非“0”的数值作为“真”。例如:由于5和3均为非“0”因此5&&3的值为“真”,即为1。又如:5||0的值为“真”,即为1。
还有位运算符
运算符 |
含 义 |
说明 |
例子 |
& |
按位与 |
把参与运算的两个数对应的二进制位相与,只有对应的二进制均为1时,结果的对应位才为1,否则为0。 |
9&5中9可以写成(00001001),5可以写成(00000101),那么9&5的运算结果为0000 0001,输出结果是1。 |
| |
按位或 |
把参与运算的两个数对应的二进制位相或,也就是只要对应的两个二进制位有一个为1时,其结果就为1。 |
9|5相当于00001001|00000101,运算结果是00001101,输出结果是13。 |
^ |
按位异或 |
把参与运算的两个数对应的二进制位相异或,当对应的二进制位上的数据字不相同时,结果对应为1时,否则为0。 |
1^1=0,1^0=1,0^0=0,0^1=1 9^5相当于00001001^00000101,运算结果是00001100,输出结果是12。 |
~ |
取反 |
把运算数的各个二进制位按位求反。 |
~9相当于~(0000 1001),运算结果为1111 0110。 |
<< |
左移 |
把“<<”左边的运算数的各二进制位向左移若干位,“<<”右边的数是指定移动的位数,高位丢弃,低位补0。 |
a<<4指把a的各二进位向左移动4位,如a=00000011(十进制为3),左移4位后为00110000(十进制48)。 |
>> |
右移 |
把“>>”左边的运算数的各二进制位全部右移若干位,“>>”右边的数是指定移动的位数。 |
设a=15,a>>2表示把00001111右移为0000 0011(十进制为3)。 |
需要说明的是,对于有符号数,在右移时,符号位将随同移动。当操作数为正数时,最高位为0,而为负数时,最高位为1。最高位是补0或补1取决于编译系统的规定。
既然运算符如此之多,那么谁先谁后呢?
PS:今天就介绍到这里,因为是拓展,没有例题,只需实记,实践需要自己运用。如果对于编写程序有所疑惑,可以看我的上一篇博客《语言C++之简单C++语言介绍》