C++基础1:C++中的数据类型和操作符

        本文主要讲解了C++的内置数据类型、内置数据类型的字面值、枚举类型和联合类型,位操作符。

        一、数据类型 

         1.C++的基本内置数据类型有char、wchar_t、int、short、long、long long、float、double、bool、long double,其中,int、short、long、long long又分为signed和unsigned。

          对于基本内置数据类型需要掌握的要点为两点:

          (1) 这些数据类型在内存中所占的大小,经过测试,我发现在不同的操作系统中,内置数据类型所占的空间大小是不一样的,就windows系统来说,

                char                1字节

                wchar_t          2字节

                short               2字节

                int                    4字节

                long                 4字节

                long long        8字节

                float                 4字节

                double            8字节

                long double   8字节

                bool                 1字节

               掌握数据类型在内存中所占的大小对于在内存中直接用指针访问变量特别有用。

          (2) 基本内置数据类型的初始化

                a.声明为全局变量,默认初始化为0

                b.声明为局部变量,在使用变量前必须初始化,无默认初始化

                c. int i(1024);  直接初始化

                    int i = 1024; 复制初始化

               这两种初始化在内置数据类型的初始化时,差别不大,但是在类型类的初始化时,这个差别会凸现出来,直接初始化调用类的构造函数,复制初始化调用类的复制构造函数。

            2. 字面值常量

             像42,45.2,false,“I am liu”这样的值被称为字面值常量。

             在这里需要重点掌握的时字符串字面值。

             a. "test" = 't' ,'e','s','t','\0'

             b.字符串字面值的连接:

                 cout<<"a multi-line "

                             "string literal "

                             "using concatenation"

                           <<endl;

                  等同于

                  cout << " a mult-line ""string literal ""using concatenation"<<endl;

                  等同于

                  cout <<" a mult-line " "string literal " "using concatenation"<<endl;

                  输出结果: a multi-line string literal using concatenation

                  而连接字符串字面值和宽字符串字面值的结果不确定,可能引起系统崩溃,也可能编译的时候不能通过。我在vs2005下测试了一下,编译不能通过。

                  cout <<"I am "L"teacher"<<endl;

               c.字符串字面值和string

                 string s1="Hello";//ok

                 string s2 = s1+"world";//ok

                 string s3 = "Hello"+"World";//error

                 string s4 = "world"+s1;//error  这种情况在C++ primer这本书中是错误,但我在实际使用时,在VS2005中,这种表达式是正确的,比较奇怪,或许在linux下这样使用不行。

           3. 枚举变量

               a.枚举变量的定义:

                       enum open_modes{open,close,append};

                        open默认初始化为0,close,append自动递增1;

                      也可

                       enum open_modes{open=3,close,append};

                       open初始化为3,close=4,append=5;

                      也可

                       enum open_modes{open=3,close=3,append};

                        open=3,cloase=3,append=4;

                     注意:枚举类型中值得默认初始化不管是定义在全局还是定义在局部,都会自动初始化。

                                 枚举变量部不安时全局变量还是局部变量,都会默认自动初始化为0。

                b.枚举变量的赋值

                     open_modes state=open;//ok

                     state=4;//error

                     open_modes state1 = state;//ok

                  只能用枚举变量或枚举成员对枚举变量赋值。

             4.类类型

                特殊的类类型:union 联合

                可以有多个类数据成员,但是只允许其中某一个雷数据成员有值,节省了内存空基纳。

              a.定义:

                  union takeValue//若无takeValue名字,则是匿名联合

                  {

                     char cval;

                     int ival;

                     double dval;

                 };

              b.数据成员不能为引用类型、类类型、静态类型。

              c.联合可嵌套

              d.联合的使用:

                     takeValue ptr;

                     ptr.ival=0;

                     takeValue* pointer = &ptr;

                     ptr->dval = 5.0; 

         二、位操作符

         1.>>和<<

          <<操作符,右边插入0补位

          >>操作符,左边插入0或1补位,如果是无符号数,插入0补位,如果是有符号数,插入符号位的副本或0值补位。

         2.^按位异或

          如果两个操作数的相同位上的数相同则为1,不同则为0。

          

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值