C++词法记号规则之标识符 关键字 操作符 分隔符 空白符
来源:互联网 发布:国信蓝点java培训 编辑:程序博客网 时间:2024/06/02 14:34
C++学习笔记 词法规则之标识符 关键字 操作符 分隔符 空白符
转自http://blog.csdn.net/u013174689/article/details/17413755
标识符
标识符是标识变量名,符号常量名,函数名,数组名,类型名,文件名的有效字符数列。
1、由字母、数字、下划线、美元符组成,第一个字符必须为字母、下划线或者美元符$开头(关于美元符号$可以做为变量名这个问题已经在VC++中调试验证)。
2、大写字母、小写字母被认为是两个不同的字符。
3、不能用C++关键字作为名称,如:class,const等
关键字keyword(保留字)
关键字是C++预定义的单词,即预先规定的具有固定含义的一些单词,也称为保留字。关键字不能用来做标识符(如变量名、函数名)。因为这些标识符已经被 C ++语言使用或者保留了,所以使用保留标识符来做自定义变量或者函数等的标识符可能会引起意想不到的问题。
使用关键字来做变量名是一种语法错误,在VC++中调试编译会报错,不能通过编译!
C++中共有73个关键字,根据其内容可分为:
基本的数据类型关键字:void, int, char, float, double, bool
类型修饰关键字:long, short, singed, unsigned
布尔型字面值:true, false
非常重要的变量声明修饰符:const, inline
存储类别关键字:auto, static, extern, , register
控制结构关键字:for, while, if, else, do
switch语句关键字:switch, case, default
路径跳转关键字:break, continue, return, goto
动态创建变量关键字:new, delete
长度运算符:sizeof
复合类型关键字:class, struct, enum, union, typedef
与类成员相关关键字:this, friend, virtual, mutable, explicit, operator
派生类继承方式:private, protected, public
模板:template, typename
命名空间:namespace, using
异常处理:catch, throw, try,
各种操作符的替代名:and, and_eq, bitand, bitor, compl, not, not_eq, or, or_eq, xor, xor_eq
其他不常用的:asm, export, typeid, volatile(列了69个,还差4个)……
ISO C++98/03关键字共63个
ISO c++11关键字共73个。
ISO C++11新关键字
alignas
constexpr
char16_t 和 char32_t
decltype
nullptr
noexcept
static_assert
auto
操作符
操作符又成为运算符、操作运算符,是用于实现各种运算的符号。
优先级
操作符
描述
例子
结合性
1
()
[]
->
.
::
++
--
调节优先级的括号操作符
数组下标访问操作符
通过指向对象的指针访问成员的操作符
通过对象本身访问成员的操作符
作用域操作符
后置自增操作符
后置自减操作符
(a + b) / 4;
array[4] = 2;
ptr->age = 34;
obj.age = 34;
Class::age = 2;
for( i = 0; i < 10; i++ ) ...
for( i = 10; i > 0; i-- ) ...
从左到右
2
!
~
++
--
-
+
*
&
(type)
sizeof
逻辑取反操作符
按位取反(按位取补)
前置自增操作符
前置自减操作符
一元取负操作符
一元取正操作符
解引用操作符
取地址操作符
类型转换操作符
返回对象占用的字节数操作符
if( !done ) ...
flags = ~flags;
for( i = 0; i < 10; ++i ) ...
for( i = 10; i > 0; --i ) ...
int i = -1;
int i = +1;
data = *ptr;
address = &obj;
int i = (int) floatNum;
int size = sizeof(floatNum);
从右到左
3
->*
.*
在指针上通过指向成员的指针访问成员的操作符
在对象上通过指向成员的指针访问成员的操作符
ptr->*var = 24;
obj.*var = 24;
从左到右
4
*
/
%
乘法操作符
除法操作符
取余数操作符
int i = 2 * 4;
float f = 10 / 3;
int rem = 4 % 3;
从左到右
5
+
-
加法操作符
减法操作符
int i = 2 + 3;
int i = 5 - 1;
从左到右
6
<<
>>
按位左移操作符
按位右移操作符
int flags = 33 << 1;
int flags = 33 >> 1;
从左到右
7
<
<=
>
>=
小于比较操作符
小于或等于比较操作符
大于比较操作符
大于或等于比较操作符
if( i < 42 ) ...
if( i <= 42 ) ...
if( i > 42 ) ...
if( i >= 42 ) ...
从左到右
8
==
!=
等于比较操作符
不等于比较操作符
if( i == 42 ) ...
if( i != 42 ) ...
从左到右
9
&
按位与操作符
flags = flags & 42;
从左到右
10
^
按位异或操作符
flags = flags ^ 42;
从左到右
11
|
按位或操作符
flags = flags | 42;
从左到右
12
&&
逻辑与操作符
if( conditionA && conditionB ) ...
从左到右
13
||
逻辑或操作符
if( conditionA || conditionB ) ...
从左到右
14
? :
三元条件操作符
int i = (a > b) ? a : b;
从右到左
15
=
+=
-=
*=
/=
%=
&=
^=
|=
<<=
>>=
赋值操作符
复合赋值操作符(加法)
复合赋值操作符(减法)
复合赋值操作符(乘法)
复合赋值操作符(除法)
复合赋值操作符(取余)
复合赋值操作符(按位与)
复合赋值操作符(按位异或)
复合赋值操作符(按位或)
复合赋值操作符(按位左移)
复合赋值操作符(按位右移)
int a = b;
a += 3;
b -= 4;
a *= 5;
a /= 2;
a %= 3;
flags &= new_flags;
flags ^= new_flags;
flags |= new_flags;
flags <<= 2;
flags >>= 2;
从右到左
16
,
逗号操作符
for( i = 0, j = 0; i < 10; i++, j++ ) ...
从左到右
ps.关于运算符的优先等级,C++标准也会不时地新增和修改,需要及时关注
其中,C++语言支持5种数学运算符——加减乘除,以及取模。
加addition,表示符号+
减subtraction,表示符号-
乘multiplication,表示符号*
除division,表示符号/
取模module,表示符号%
加减乘除运算,它们和一般的数学运算符没有区别。
取模运算(module),是用百分号(%)表示的,它的意思是取两个整数相除的余数。例如,变量a= 15 % 4,变量a的值将会为结果3,因为3是15除以4的余数。
分隔符
分隔符是用于分隔各个词法记号或程序正文的符号。如空格 TAB 回车CR 换行LF 括号( ) 中括号 [ ] 花括号{ } 分号: 逗号, 运算符(+ -*/%) ! ^ & * = | ~ \ ; ' " < > ? ' . # ,都是 c++ 语言里的分隔符。
其中 ! % ^ & * ( ) – + = { } | ~ [ ] \ ; ' : " < > ? , . / #也称标点符号,即标点和特殊字符。
空白符
空白符是空格、制表符(TAB键产生的字符)、换行符(Enter键所产生的字符)和注释的总称
- C++词法记号规则之标识符 关键字 操作符 分隔符 空白符
- C++词法记号规则之标识符 关键字 操作符 分隔符 空白符
- 分隔符和标识符规则
- JAVA标识符、关键字、分隔符
- JavaSE_03_术语、关键字、标识符、注释、分隔符
- 标识符、分隔标识符、保留关键字、字符串、通配符、转义符
- Java注释、常用分隔符以及标识符命名规则
- 分隔符 空白符
- java分隔符、标识符以及关键字注释及惯例
- java的分隔符、注释、标识符及关键字
- C语言的关键字,运算符,标识符
- 词法分析器(4.外部文件(关键字,操作符,读入程序))
- 预处理器 - 记号传递操作符##
- C++编码规则---空白符
- C语言中关键字、标识符、注释、变量、运算符
- java 关键字,标识符,运算符
- 黑马程序员——Java基础——命名规则、标识符、关键字和运算符
- 数据类型/强制类型转换 和运算符---标识符规则/关键字 a++和++a区别
- Dungeon Master (广搜)
- WebService+Rxjava
- ios-CALayer
- 深度学习:卷积神经网络CNN
- IDEA tomcat问题
- C++词法记号规则之标识符 关键字 操作符 分隔符 空白符
- Math.random()
- Ubiquitous Religions 【poj-2524】【并查集】
- H
- 新手学C++多线程编程(2)进程
- JEESZ-Zookeeper集群安装
- java基础第一课
- jeesz分布式架构 Dubbo、zookeeper、KafKa、redis、fastdfs、单点登录sso、springmvc+mybatis+shiro、Restful服务
- ZZULIOJ【1069】向Z同学学习【循环】&&【模拟】