1)Switch(selector){
case value1:statement;break;
case value1:statement;break;
}
selector必须是产生整数值的表达式。不能使用字符串类型对象。
2)运算符优先级
首先说,这是笔试的时候经常考的问题。为什么你就不能写的规范清晰些,非要!++a--&b这样写呢亲?加个括号会死么?!!!你鼓励你的员工都写成这个样子么?
3)没有long float类型,只有 long int 和 long double
4)连续分配的变量在内存中是连续存放的。
5)局部变量
也称为自动变量,因为在进入作用域的时候自动生成,离开作用域后自动消失。auto类型。
6)寄存器变量
register,告诉编译器,尽可能快地访问这个变量。只是一个暗示,不能保证变量放在寄存器中。限制:不能得到其地址。
7)静态变量
static,初始化只在函数第一次调用时执行,函数调用之间变量的值不变。在函数范围外不可见。
在某个作用域外不可访问:一、在所有函数外部,表示”在文件的外部不可以用该名字“;二、在函数内部表示”在函数外部不可以用该名字“
8)外部变量
extern
9)内部连接
只对正在编译的文件创造存储空间。用内部连接,其他文件可以使用相同的标识符或者全局变量,连接器不会发现冲突,也就是为每一个标识符创建单独的空间。内部连接由static指定。
10)外部连接
为所有被编译过的文件创建一片单独的存储空间。全局变量和函数有外部连接, 用extern可以从其他文件访问它们。连接器不知道自动变量,他们只临时存在于栈上。
11)volatile变量
告诉编译器”不知道何时会改变“
12)打印二进制格式:
void PrintBinary(const unsigned char val)
{
for(int i = 7; i >= 0; i--)
if(val & (1 << i) )
cout <<"1";
else
cout <<"0";
}
12)逗号运算符,只产生最后一个表达式的值。
13)C++中的类型转换
1) static_cast 静态类型转换,非强制转换,窄化转换(非向下转换,那是dynamic_cast的工作),void* 的强制转变,隐式类型变换和雷层次的静态定位(向上转换)
2) const_cast 常量转换从const转为非const, 或者从volatile转为非volatile
const int i = 0;int* j = (int*)&i;//cannot convert a parament from const int* to int*
int& j = const_cast<int*>(&i);
long* l = const_cast<long*>(&i);//Error
3) reinterpret_cast重解释转换,最不安全,最容易出问题。一般是指针间的转换。
4) dynamic_cast 动态类型转换,运行期判断该转换是否正确。
14)enum{circle, square, rectangle};
15) 指针和数组
void func1(int a[], int size)
{
for(int i = 0;i < size; i++)
a[i] = i;
}
void func2(int* a, int size)
{
for(int i = 0;i < size; i++)
a[i] = i;
}
第一个明显更容易让人明白这是传递的一个数组,数组一般都采用传地址的方式。
16)把变量和表达式转换成字符串
#define PR(x) cout << #x "=" <<x <<"\n";
相当于cout <<“ a= "<<a << endl;
1
1
posted on 2012-05-28 17:23
Dino-Tech 阅读(257)
评论(3) 编辑 收藏 引用