c++primer笔记----表达式和语句

  • int *p = adecltype(*p)类型是int&decltype(&p)类型是int**

  • 数组隐式转换为指针

int ia[10];
int *ip = ia;  //ia转换为指向数组首地址的元素
  • sizeof (type) or sizeof expr

    1. 对char或者char的表达式 :大小是1
    2. 被引用对象:被引用对象所占空间大小
    3. 指针:指针本身大小
    4. 解引用指针:指向对象类型的大小,指针不需要有效
    5. 数组:整个数组所占空间大小
    6. string 或者 vector对象:元素个数
  • 整型提升:小整数(char bool short等)–>大整数(int)。有符号–>无符号

  • 显示转换:static_cast,不包含底层const;const_cast,只能改变运算对象的底层const。不建议使用显示转换

double slope = static_cast<double>(j)/i;

const char *pc;
char *p = const_cast<char*>(pc);  //但是通过p写值是未定义的
  • 下表列出 C++ 运算符的优先级和结合性。运算符从顶到底以降序列出。

  • trycatchthrowtry语句块内声明的变量在块外部无法访问,在catch子句内也无法访问

while(1){
    try{
        if(a != b)
            throw runtime_error("data must be same");
    } catch(runtime_error err){   //保证了程序出问题后,找到问题,仍能继续进行,不会中断
        cout << err.what();
        cout << "try again";
    } 
}
  • <stdexcept>中定义了几种常用的异常类。what返回的内容与异常类型有关。如果有初始化字符串,则返回该字符串。否则,由编译器决定
exception
runtime_error
range_error
overflow_error
underflow_error
logic_error
domain_error
invalid_argument
length_error
out_of_range

猜你喜欢

转载自blog.csdn.net/qq_28038207/article/details/80992876
今日推荐