1. decltype(expression)
编译器使用下列规则来确定expression
参数的类型。
- 如果
expression
参数是标识符或类成员访问,则decltype(expression)
是expression
命名的实体的类型。如果不存在此类实体或expression
参数命名一组重载函数,则编译器将生成错误消息。 - 如果
expression
参数是对一个函数或一个重载运算符函数的调用,则decltype(expression)
是函数的返回类型。将忽略重载运算符两边的括号。 - 如果
expression
参数是右值,则decltype(expression)
是expression
类型。如果expression
参数是左值,则decltype(expression)
是对 左值引用 类型的expression
。
2.优先级规定了运算对象的组合方式,但是没有说明运算对象按照什么顺序求值,如
int i=f1()+f2();
因此,如果f1()和f2()有关联,则可能产生未定义行为。
3. *p++,解引用是p未加1之前的值
4.位移操作时,运算对象是小整型,会被提升为较大的整数类型,如char->int
参考资料: