语言C++之基础知识(拓展)

这些只是本蒟蒻的一些见解,还望各位神犇积极评论提出宝贵意见,万分感谢!!!!!!!!!!

第二篇啊,给点关注吧,以后会写更多的!!!!!!!!!!!!!!!!!!!!!!!!!

本章只是对上一章的补充,上一章提到了赋值语句,现在我们来学一点别的

赋值表达式的基本模板是:类型名 变量=所需赋的值;但是如果需要赋值多个,就显得有些麻烦了,于是可以:类型名 变量=变量=变量......(变量个数不限)所需赋的值,如: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++语言介绍

猜你喜欢

转载自blog.csdn.net/qq_41712886/article/details/81506021