1.标准c++中宽字符wchar_t
字符常量前加L(一定要大写)
(long型常量加后面,不区分大小写)
2. long double 10位有效数字(VC为8字节,会映射成double,GCC为12字节)
3. 整形提升:
所有小于整形的数在算术表达式计算之前都转换成整形,可用int用int,否则用unsigned int
char a,b; sizeof(a+b)为4 c=a+b在整形提升后运算,赋值时截取低8位
char a = 100,b = a*2;将a提升为整形,得200,截取低8位给b 为-56
4.初始化:
用刚定义变量初始化
Double salary = 999.99,wage(salary+0.01)
用函数返回值初始化
Double sale_price = apply_discount(price,discount)
如果声明有初始化式,则被视为定义,即使有extern
extern double pi = 3.1416;
只有当声明位与函数外时才可以有初始化式。
头文件中可以定义const对象和inline函数
但const对象必须是用常量表达式初始化的 此时该变量不占用存储空间
头文件中可以放变量定义、结构体声明,但要加条件编译以防被多次编译
5.类型转换
赋值发生的隐式强制类型转换与显式的相同
由int到char截断
由double到int,char取整(要舍入可通过+0.5实现)
float f; (int&)f将f在内存中的值直接当做整形 %d 输出浮点数也一样
C++4种强制转换 cast_name<type>(pxpression)
static_cast 最常用,类似C中的转换 任何隐式转换可以用此关闭警告
dynamic_cast 将子类指针转成父类
const_cast 去掉const属性
reinterpret_cast 对操作数的位模式进行较低层次的重新解释 例如可以从int到double 按位拷贝,更常见用途是指针类型的转换
1.printf参数从右向左压栈
%[flags][width][.perc][F|N|h|l]type
type d,i有符号10进制整数 u无符号10进制整数
x无符号16进制数小写 X大写
s字符串 S宽字符串
p指针 因为指针是一个变量,也可以直接用d,x输出
flags -左对齐
0在前面补0
perc 精度
F|N|h|l 是否远指针 长整数 双精度
printf默认输出6位 cout会把结果中后面的0去掉
cout 16进制 cout<<hex<<...
2.引用
引用定义时必须初始化,以后不可以改变指向的对象
只有常引用可以用常数 或者其它类型的变量初始化 将创建一个临时变量
3.函数调用时先参数压栈,后压函数地址,参数从右至左 但栈是从上往下生长的,先入栈的在高地址
4. 两个仅由空格换行制表分开的字符串字面值可连接成一个新字符串字面值
std::cout <<”fefaefe”
“faetre”
<<std::endl;
5. 在一行末尾加一反斜线符号可将此行和下一行作一行处理。
std::cou/
t <<a<<endl;
但要注意下一行前面不能有空格
6. String s2 = s1+”se”+”hr”;正确,因为+号返回了string对象
String s3 = “hwe”+”hw”+s1;错误
double型变量可以++
包含文件大小写不敏感,因为操作系统文件名大小写不敏感
NULL包含在stdio.h中 iostream包含了此头文件
VC函数调用及局部变量所占的栈区默认1M