美文网首页
CPP学习(二)

CPP学习(二)

作者: zoterap | 来源:发表于2019-01-25 14:03 被阅读2次

    学习点

    • 命名空间
    • 变量
    • 枚举

    问题

    定义了变量类型为unsigned,为啥还能传递负数进去?
    为啥float类型的数据打印的时候,精度丢失?
    为啥double类型的数据打印的时候,精度丢失?
    使用extern的变量定义,作用是啥?

    show me the code

    #include <iostream>
    /**
     * 引入命名空间
     */
    using namespace std;
    
    
    /**
     * 函数声明
     */
    void learn_namespace_and_cout();
    
    void learn_var();
    
    void learn_enum();
    
    /**
     * 全局变量
     */
    extern int extern_int;
    
    int main() {
        learn_namespace_and_cout();
        learn_var();
        learn_enum();
    
        return 0;
    }
    
    
    void learn_namespace_and_cout() {
        /**
         * 打印经典的 hello world
         * 打印 int 类型
         */
        cout << "----------[learn_namespace_and_cout]----------" << endl;
        cout << "hello world" << endl;
        cout << 1 << endl;
    
    }
    
    void learn_var() {
    //    类型    长度  范围
    //    char  1byte   -127 - 127 或者 0 - 255
    //    unsigned char 1byte   0 - 255
    //    signed char   1byte   -127 - 127
    //    int   4bytes  -2147483648 - 2147483647
    //    unsigned int  4bytes  0 - 4294967295
    //    signed int    4bytes  -2147483648 - 2147483647
    //    short int 2bytes  -32768 - 32767
    //    unsigned short int    Range   0 - 65,535
    //    signed short int  Range   -32768 - 32767
    //    long int  4bytes  -2,147,483,647 - 2,147,483,647
    //    signed long int   4bytes  和 long int 一样
    //    unsigned long int 4bytes  0 - 4,294,967,295
    //    float 4bytes  +/- 3.4e +/- 38 (~7 位数字)
    //    double    8bytes  +/- 1.7e +/- 308 (~15 位数字)
    //    long double   8bytes  +/- 1.7e +/- 308 (~15 位数字)
    //    wchar_t   2 或者 4 bytes    1 个宽字符
    
    
        /**
         * C++变量类型
         * 单精度是这样的格式,1位符号,8位指数,23位小数
         * 双精度是1位符号,11位指数,52位小数
         *
         * 当你使用多个文件,并且你自己定义的变量放在其中一个文件里,变量的声明将对程序的链接很有用。
         * 您可以使用 extern 关键字来声明一个放在任何位置的变量。
         *
         * TODO 定义了变量类型为unsigned,为啥还能传递负数进去?
         * TODO 为啥float类型的数据打印的时候,精度丢失?
         * TODO 为啥double类型的数据打印的时候,精度丢失?
         * TODO 使用extern的变量定义,如果值发生变化,是否会全局发生变化?
         *
         *
         */
        cout << "----------[learn_var]----------" << endl;
        char _char = 0;
        cout << _char << endl;
        cout << (int) _char << endl;
        cout << "sizeof:" << sizeof(_char) << endl;
    
        unsigned char _unsigned_char = -1;
        cout << _unsigned_char << endl;
    
        cout << "-----[learn_var_float]-----" << endl;
        float _float = 1.1111111111111;
        cout << _float << endl;
    
        double _double = 1.1111111111111;
        cout << _double << endl;
    
        float _float_no_initialization;
        cout << _float_no_initialization << endl;
    
        cout << "-----[learn_extern]-----" << endl;
        int extern_int;
        extern_int = 99;
        cout << extern_int << endl;
    
        int extern_int_int_01_25 = 1;
        cout << extern_int_int_01_25 << endl;
        
    }
    
    void learn_enum() {
        /**
         * 定义枚举
         * 枚举的默认赋值是从0开始的,依次类推
         */
        cout << "----------[learn_enum]----------" << endl;
        enum TEST_ENUM {
            A, B, C = 6, D
        } x;
    
        cout << A << endl;
        cout << B << endl;
        cout << C << endl;
        x = D;
        cout << x << endl;
    
    }
    

    相关文章

      网友评论

          本文标题:CPP学习(二)

          本文链接:https://www.haomeiwen.com/subject/oojmjqtx.html