前言:
大家好,我是来自南京的一名大四学生,专业是电子信息工程。最近在学习Qt的过程中回顾了C++的相关知识,感觉收获很多。这是我第一次发文章,在文章中我将重点关注C++中与C的异同之处,它不是一部全面学习C++的宝典,但是我希望能让您在最短的时间内掌握重点,文章是建立在您有一定的C基础上的。文章中如果有错误不妥之处欢迎大家批评指证。(QQ:604848340)
一.定义C++中的标识符
有效标识由字母(letter),数字(digits)和下划线 ( _ )组成。标识的长度没有限制,这里与C语言是一样的。但是有些编译器只取前 32 个字符(剩下的字符会被忽略)。空格(spaces),标点(punctuation marks)和符号(symbols) 都不可以出现在标识中。只有字母(letters),数字(digits) 和下划线(_)是合法的并且变量标识必须以字母开头。
标识也可能以下划线(_)开头,但这种标识通常是保留给为外部连接用的。标识不可以以数字开头。必须注意的另一条规则是当你给变量起名字时不可以和 C++语言的关键字或你所使用的编译器的特殊关键字同名,因为这样与这些关键字产生混淆。例如,以下列出标准保留关键字,他们不允许被用作变量标识名称:
asm, auto, bool, break, case, catch, char, class, const, const_cast, continue,
default, delete, do, double, dynamic_cast, else, enum, explicit, extern, false,
float, for, friend, goto, if, inline, int, long, mutable, namespace, new,
operator, private, protected, public, register, reinterpret_cast, return,
short, signed, sizeof, static, static_cast, struct, switch, template, this,
throw, true, try, typedef, typeid, typename, union, unsigned, using, virtual,
void, volatile, wchar_t, while
另外,不要使用一些操作符的替代表示作为变量标识,因为在某些环境中它们可能被用作保留词:
and, and_eq, bitand, bitor, compl, not, not_eq, or, or_eq, xor, xor_eq
你的编译器还可能包含一些特殊保留词,例如许多生成 16 位码的编译器(比如一些 DOS编译器)把 far, huge 和 near 也作为关键字。
非常重要:C++语言是“ 大小写敏感”(“case sensitive”) 的,即同样的名字字母大小写不同代表不同的变量标识。因此,例如变量 RESULT,变量 result 和变量 Result 分别表示三个不同的变量标识。
二.C++变量初始化
变量初始化时比C多出一种方式。
C++中有两种初始化方法:
第一种,又叫做类 C (c-like) 方法,是在声明变量的时候加上一个等于号,并在后面跟上想要的数值:
type identifier = initial_value ;
例如,如果我们想声明一个叫做 a 的 int 变量并同时赋予它 0 这个值,我们可以这样写:int a = 0;
另外一种变量初始化的方法,又叫做构造函数(constructor)初始化, 是将初始值用小括号(parenthesis ())括起来:
type identifier (initial_value) ;
例如:
int a (0);
在 C++.中以上两种方法都正确并且两者等同 ,它适用于所有C++中用于赋值的地方。
三.C++运算符
1.逻辑运算符
逻辑运算符 包括 Logic operators (( !, &&, || ))
2.逗号运算符
逗号运算符 (,) 用来分开多个表达式,并只取最右边的表达式的值返回。
例如有以下代码:a = (b=3, b+2);
这行代码首先将 3 赋值给变量 b,然后将 b+2 赋值给变量 a。所以最后变量 a 的值为 5,而变量 b 的值为 3。
3.位运算符 Bitwise Operators (( &,|,^,~, <<, >> ))
位运算符以比特位改写变量存储的数值,也就是改写变量值的二进制表示:
op asm
Description
& AND 逻辑与 Logic AND
| OR 逻辑或 Logic OR
^ XOR 逻辑异或 Logical exclusive OR
~ NOT 对 1 取补(位反转)Complement to one (bit inversion)
<< SHL 左移 Shift Left
>> SHR 右移 Shift Right
4.变量类型转换运算符 Explicit type casting operators
变量类型转换运算符可以将一种类型的数据转换为另一种类型的数据。在写 C++中有几种方法可以实现这种操作,最常用的一种,也是与 C 兼容的一种,是在原转换的表达式前面加用括号()括起的新数据类型:
int i;
float f = 3.14;
i = (int) f;
以上代码将浮点型数字 3.14 转换成一个整数值(3)。这里类型转换操作符为(int)。在C++中实现这一操作的另一种方法是使用构造函数 constructor 的形式:在要转换的表达式前加变量类型并将表达式括在括号中:
i = int ( f );
以上两种类型转换的方法在 C++中都是合法的。另外 ANSI-C++针对面向对象编程(objectoriented programming)增加了新的类型转换操作符.
5.赋值运算符
C++拥有而其他语言没有的一个特性是赋值符 (=) 可以被用作另一个赋值符的 rvalue(或 rvalue 的一部分) 。例如:
a = 2 + (b = 5);
等同于:
b = 5;
a = 2 + b;
它的意思是:先将 5 赋给变量 b,然后把前面对 b 的赋值运算的结果(即 5)加上 2 再赋给变量 a,这样最后 a 中的值为 7。因此,下面的表达式在 C++中也是正确的:
a = b = c = 5; //将 5 同时赋给 3 个变量 a, b 和 c。
四.常量的声明
声明常量 declared constants (const)
通过使用 const 前缀,你可以定义指定类型的常量,就像定义一个变量一样:
const int width = 100;
const char tab = '\t';
const zip = 12440;
如果没有指定类型(如上面最后例子中最后一行),编译器会假设常量为整型 int。
DiracFatCat 2014-10-21 13:39
用户177403 2014-2-16 10:56