main和_tmain取决于程序是否使用unicode,使用为_tmain
注释的另一种形式是以/*和*/为界
using std::cout;告诉编译器,只要使用名称cout,就表示std::cout
1.125E2,其中小数部分与E(代表指数)后面指定的10的幂相乘。=1.125x10²
常量结尾f指定它属于float型,如果没有f,这个常量就是double型。
typedef关键字能够为现有的类型定义自己的类型名称:typedef long int bigones;把bigones定义为long int 的别名
cout<<std::setiosflags(std::ios::left)//设置为左对齐
顺序 | 运算符 | 关联性 |
1 | :: | 无 |
2 | ()【】-> . ++ -- typeid const_cast reinterpret_cast | 左向右 |
3 | logical not ! unary + unary - type cast sizeof decltype new new[] | 右往左 |
4 | .* ->* | 左向右 |
5 | * / % | 左向右 |
6 | + - | 左向右 |
7 | << >> | 左向右 |
8 | == != | 左向右 |
9 | & | 左向右 |
10 | ^ | 左向右 |
11 | | | 左向右 |
12 | && | 左向右 |
13 | || | 左向右 |
14 | ?: | 右向左 |
15 | = *= /= %= += -= &= ^= |= <<= >>= | 右向左 |
16 | throw | 右向左 |
17 | , | 左向右 |
如果一个运算符既有一元形式又有二元形式,一元形式始终具有较高的优先顺序,因而首先执行
包含被转换值的变量本身不会改变,编译器把转换后的值存储在一个临时的内存位置,在计算完成后删除
关键字static_cast表明将静态检查类型强制转换,也就是在编译程序时检查,dynamic_cast将动态转换,就是执行程序时
const_cast用于删除表达式中的const属性,reinterpret_cast是一种无条件的强制转换
auto关键字用作变量的类型,变量的类型根据提供的初始值来推断,但不要与初始化列表用在一起,因为初始化列表的类型为
std::initializer_list<int> auto n=16;//n类型为int
typeid操作符能确定表达式的类型,可以如此:typeid(x*y).name();
按位与&,全都为1才为1,否则为0,可以用来把变量中特定的位设置为0,创建掩码,想0的地方为0,想保持的地方为1
按位或|,有1就为1 按位异或,相同为0,不同为1//异或的性质,当两个char变量,则
first^=last;last^=first;first^=last; 则first ,last在不占用任何中间存储单元的情况下交换了值
按位否,0变1,1变0 按位左移和右移,二进制形式直接向左或向右偏移给定的位数,左移相当于乘以2的n次幂,右移除以
2的n次幂,舍弃余数。
lvalue指的是内存中持续存储数据的一个地址。实地址。rvalue是临时存储的表达式的结果
全局变量的创建和初始化发生在Main()函数执行之前
使用作用域符可以使用全局变量,用::变量名
不一定要接受枚举器的默认类型,而可以把枚举器的类型显示指定为除wchar_t之外的其他整数类型如:
enum Weekdays: unsigned long {mon,tues,wed} tomorrow;//现在weekdays的枚举器是unsigned long类型
安全类型枚举型enum class ......不支持值得隐式转换。
定义自己的名称空间: namespace mystuff{ ... };