c++ --> 变量、常量与运算符

时间:2023-12-12 12:36:38
变量、常量与运算符
 
一、什么是变量?
    在计算机的内存中, 内存被划分为一个一个的内存单元, 每个内存单元有自己的编号, 而变量就是对某一段连续内存单元使用一些更容易记忆、更容易区分的字符组合为其建立一个新的名称。

1)变量名命名规则:
        1)由字母(a-z, A-Z)、数字(0-9)或下划线(_)组成;
        2)第一个字符必须是字母或下划线;
        3)区分大小写, 例如A和a编译器会认为是不同的变量名;
        4)标示符不能是C++的关键字.

2)C++的关键字:
  C++的关键字是指C++语言本身已经使用了的有特定意思的字符, 例如int、float、double、char、wchar_t、short、long、signed、unsigned这些都不能再作为变量名, C++关键字整理:
and and_eq asm auto bitand bitor bool break
case catch char class compl const const_cast continue
default delete do double dynamic_cast else enum explicit
export extern false float for friend goto if
inline int long mutable namespace new not not_eq
operator or or_eq private protected public register reinterpret_cast
return short signed struct sizeof static static_cast throw
switch template this typeid true try typedef using
typename union unsigned virtual void volatile wchar_t while
xor xor_eq             

3)变量类型以及取值范围:

数据类型 取值范围
int 与编译器有关
unsigned [int] 与编译器有关
short [int]  -32768 ~ 32768
long [int]  -2147483648 ~ 2147483647
signed [int] 同int
signed short [int]  同short int
signed long [int] 同long int
unsigned short [int] 同unsigned int
unsigned long [int]  0 ~ 4294967295
float -3.4e-38 ~ 3.4e38        小数位6位
double  -1.7e-308 ~ 1.7e308        小数位15位

如果数字超过了这个范围就会产生错误(溢出),在较新的编译器上,  int型数据的范围为-2147483648 ~ 2147483647。

 
二、什么是常量?
     常量是指程序在运行时其值不能改变的量。
1)整型常量
     C++提供了三种进制对常量进行描述, 分别是八进制、十进制、十六进制。
 
2)浮点型常量
  浮点型常量与数学上的用法相同, 有两种表示方式: 一种是常规的计数法, 另一种是科学计数法:

1)常规计数法: 整数部分.小数部分

                例如: 1.7、2.65、18.375
    2)科学计数法:
                 由整数部分.小数部分e或E指数部分组成
                 例如:
                    1.7x10的23次方表示为: 1.7e23
                    4x10的17次方表示为: 4e17
                    0.8的负5次方表示为: 0.8e-5
     C++可以使用后缀声明一个整型常量或浮点型常量的长度, 可以使用的后缀有L(l):长的, U(u):无符号的, F(f):浮点型的。
            声明一个整型常量为long的整型, 1000L
            声明一个long double型的常量: 1.2L
            声明一个unsigned long int型的常量: 1024UL
     未加后缀区分的整型常数一律默认为int型, 未加后缀区分的浮点型一律默认为double型, 浮点常数只能用十进制表示。
3)字符常量
        字符常量用一对单引号('')括起来的一个或多个字符称为字符常量, 例如'A'、'BC'、'#'、'\n'(转义符)、'6'等, 其中'A'、'#'、'6'称为单字符常量, 'BC'称为双字符常量, '\n'为转义符。
        对于双字符常量, 编译器将其解释为一个unsigned short int型。
4)C++中的转义符
转义字符  描述
 \’ 单引号
 \”  双引号
\\   反斜杠
            \0              空字符(NUL)
 \ooo o代表一位八进制数
 \a 响铃符
\b 退格符
 \f  换页符
 \n  换行符
 \r 回车符
 \t  水平制表符
 \v 垂直制表符
 \xhh  h代表一位十六进制
5)字符串常量
        字符串常量是指用一对双引号括起来的零个或多个ASCII字符的序列, 并以NULL(0)结束的字符串, 例如"Hello, world!"就是一个字符串常量。
 
6)符号常量:
        用一个标识符来表示一个常量,称之为符号常量。
      #define是一条预处理命令, 称为宏定义命令, 其功能是把该标识符定义为其后的常量值。一经定义, 以后在程序中所有出现该标识符的地方均代之以该常量值。
    #define PI 3.14
 
三、运算符
 
1)算术运算:
              +    (加)
              -    (减)
              *    (乘)
              /    (除)
              %    (取余)
              -    (取负)
     说明: 当两数均为整型且被除数不为0才可进行取余运算。
2)关系运算:
     关系运算, 又称比较运算, C++提供了6种关系运算:

   >          大于
              <          小于
              =          等于
              >=        大于等于
              <=        小于等于
              ==        等于(两个=号)
              !=        不等于

3)逻辑运算:
     逻辑运算符是根据表达式的值来返回真值或是假值。
运算符 名称 说明
&& 逻辑与 同为真返回真
||  逻辑或 有一真返回真
! 逻辑非 值为真返回假, 值为假返回真
4)赋值运算:
     赋值语句的作用是把某个常量或变量或表达式的值赋值给另一个变量或左值表达式, 赋值符号为'='。
     注意: 与等于符号(==)区分, 赋值是一个等号=, 而相等为两个等号。等号左边的变量或左值表达式称为左值, 产生值的表达式我们称为右值, 常数只能作为右值。
        i = 10 ;
        a = b = 0 ;
     第一个的含义为将常量10赋值给变量i, 第二个赋值语句的意思是把0同时赋值给两个变量。
 
5)条件运算:
     首先对逻辑表达式进行运算, 如果为真, 则返回表达式1的值; 如果为假, 则返回表达式2的值。
        a = 10 ;
        b = 20 ;
        max = a > b ? a : b ;
 
6)运算符的优先级和结合性
     C++中一些基本运算符的结合性与优先级如下:

优先级

运算符

名称或含义

使用形式

结合方向

说明

1(最高)

[]

数组下标

数组名[常量表达式]

左到右

 

()

圆括号

(表达式)/函数名(形参表)

 

.

成员选择(对象)

对象.成员名

 

->

成员选择(指针)

对象指针->成员名

 

2

-

负号运算符

-表达式

右到左

单目运算符

(类型)

强制类型转换

(数据类型)表达式

 

++

自增运算符

++变量名/变量名++

单目运算符

--

自减运算符

--变量名/变量名--

单目运算符

*

取值运算符

*指针变量

单目运算符

&

取地址运算符

&变量名

单目运算符

!

逻辑非运算符

!表达式

单目运算符

~

按位取反运算符

~表达式

单目运算符

sizeof

长度运算符

sizeof(表达式)

 

3

/

表达式/表达式

左到右

双目运算符

*

表达式*表达式

双目运算符

%

余数(取模)

整型表达式/整型表达式

双目运算符

4

+

表达式+表达式

左到右

双目运算符

-

表达式-表达式

双目运算符

5

<<

左移

变量<<表达式

左到右

双目运算符

>>

右移

变量>>表达式

双目运算符

6

>

大于

表达式>表达式

左到右

双目运算符

>=

大于等于

表达式>=表达式

双目运算符

<

小于

表达式<表达式

双目运算符

<=

小于等于

表达式<=表达式

双目运算符

7

==

等于

表达式==表达式

左到右

双目运算符

!=

不等于

表达式!= 表达式

双目运算符

8

&

按位与

表达式&表达式

左到右

双目运算符

9

^

按位异或

表达式^表达式

左到右

双目运算符

10

|

按位或

表达式|表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

||

逻辑或

表达式||表达式

左到右

双目运算符

13

?:

条件运算符

表达式1? 表达式2: 表达式3

右到左

三目运算符

14

=

赋值运算符

变量=表达式

右到左

 

/=

除后赋值

变量/=表达式

 

*=

乘后赋值

变量*=表达式

 

%=

取模后赋值

变量%=表达式

 

+=

加后赋值

变量+=表达式

 

-=

减后赋值

变量-=表达式

 

<<=

左移后赋值

变量<<=表达式

 

>>=

右移后赋值

变量>>=表达式

 

&=

按位与后赋值

变量&=表达式

 

^=

按位异或后赋值

变量^=表达式

 

|=

按位或后赋值

变量|=表达式

 

15(最低)

,

逗号运算符

表达式,表达式,…

左到右

从左向右顺序运算

注意: 表格引用自 姜南(Slyar) 的博客, 并进行了部分修改, 已取得引用授权, 引用地址:http://www.slyar.com/blog/c-operator-priority.html
相关数据类型所使用的字节数如下:
数据类型 占用字节数
char 1字节
int 不确定, 2或4字节
unsigned int 不确定, 2或4字节
short [int] 2字节
unsigned short [int]  2字节
long [int] 4字节
unsigned long [int]   4字节
float 4字节
double 8字节