zoukankan      html  css  js  c++  java
  • c++primer笔记二、变量和基本类型

    1、数据类型

    int、short、long和long long都是带符号的
    unsigned int可以得到无符号类型,缩写unsigned
    
    字符串有char、signed char、unsighed char
    

    类型转换

    1、转换成布尔值0为false ,其他为true  
    2、布尔值转成其他时false变成0,true变成1
    3、浮点数强转会近似,只保留之前部分,不四舍五入  
    4、整数变浮点,小数部分都为0
    5、超过无符号表示范围,则实际数为取模的余数  
    6、超过带符号非为,报错
    

    字面值常量

    0x表示16进制,0开头表示8进制,10进制时E或e表示科学计数法的指数部分
    
    字符串的结尾有一个空字符'',因此实际长度要多1
    

    转义序列

    
    换行
    	横向制表
    v纵向制表
    "双引号
    
    回车
    115 表示字符对应的数值115
    
    注意八进制数字只能跟3个,1234表示一个字符和4
    x要用到后面所有字符
    
    
    

    变量声明和定义

    声明使名字为程序所知,规定了类型和名字 
    定义负责创建和名字关联的实体,定义还申请存储空间,也可能复制
    
    想声明不定义用extern,并且不要显式初始化  
    extern int i;//声明但非定义  
    int j;//声明并定义j
    extern double pi =3.141;//定义
    
    变量只能被定义一次,但是可以多次声明。
    
    如果在多个文件中使用同一个变量,就必须分类,定义只能出现在一个文件中,不能重复定义。  
    
    

    标识符

    变量名一般用小写字母  
    自定义的类名一般都大写开头
    如果有多个单词,第一个首字母小写其他首字母大写
    

    复合类型

    引用:为对象起了另一个名字
    int ival = 1024;
    int $refVal = ival;//refVal指向ival
    引用和初始值绑定,如果一个修改另一个也会被修改。  
    但是两个名字指向同一个对象  
    引用的初始值必须时对象,并且两者类型相同
    
    指针  
    指针本身是一个对象,允许复制和拷贝,也可以先后指向不同的对象。  
    指针无须定义赋初值
    
    获取对象地址
    int ival = 42;
    int *p = &ival //p存放ival的地址
    
    指针的值应该4种状态之一
    1:指向一个对象  
    2:指向紧邻对象所占空间的下一个位置  
    3:空指针  (nullptr)
    4:无效指针 //拷贝或访问无效制作都会错误
    
    空指针int *p1 = nullptr
    NULL是预处理变量,值为0,应该避免使用,最好用nullptr  
    
    void* 是特殊指针,可存放任意对象的地址
    

    const限定符

    定义常量,必须赋值,如
    const int bufSize = 512;
    在编译过程钟用到bufSize的地方都替换成512
    
    要在一个文件中定义const,而在其他文件中声明使用,则添加extern
    extern const int bufSize;
    
    可以把引用绑定到const,就是对常量的引用,不能修改它绑定的对象
    const int ci = 1024;
    const int &r1 = ci;
    int &r1 = ci; //这个会报错
    r1无法修改
    
    指针也可以用常量指针
    顶层const表示指针是常量
    int *const p1 = &i;
    底层const表示指针的对象是常量
    const int *p2 = &ci;
    

    constexpr

    让编译器来判断是否是常量表达式。声明为constexpr的变量一定是一个常量,并且必须用常量表达式初始化
    constexpr int mf = 20; //是常量表达式
    constexpr int limit = mf + 1; //是常量表达式
    constexpr int sz = size() //只有当size是一个constexpr函数时,才是常量
    
    

    类型别名

    1、typedef double wages
    2、using SI = Sales_item
    
    起一个别名使用,可以给指针
    typedef char *pstring;
    const pstring cstr = 0 ;//cstr时指向char的常量指针
    
    

    auto类型说明符

    让编译器来推算,必须要有一个初始值;
    auto会忽略顶层const,保留底层const
    
    如果希望推断出顶层const。需要指出
    const auto f = ci;
    
    也可以把引用类型设置为auto
    auto &g = ci;
    

    decltype类型指示符

    选择并返回操作数的数据类型,不实际计算表达式
    若使用的表达式不是变量是引用,则结果必须被初始化
    int &r = i;
    decltype(i) b = 1; //i是引用必须赋初值
    decltype(i + 0) b; //是int类型
    表达式如果加上了括号,结果也将会是引用
    decltype((i)) d; //错误,d是int&
    

    头文件保护符

    #define 指令把一个名字设定为预处理变量
    #ifdef当变量已定义时为真
    #ifndef变量未定义时为真
    执行操作到#endif为止
    
  • 相关阅读:
    二分查找思路以及可能出现情况对应解决办法
    多线程知识点大纲
    服务器consul启动方法
    大白话带你认识 ZooKeeper !重要概念一网打尽!
    「Netty实战 02」手把手教你实现自己的第一个 Netty 应用!新手也能搞懂!
    从 BIO、NIO 聊到 Netty,最后还要实现个 RPC 框架!
    什么是P问题、NP问题和NPC问题
    期刊汇总
    Typora 使用
    TCA 复习
  • 原文地址:https://www.cnblogs.com/aqq2828/p/13953626.html
Copyright © 2011-2022 走看看