• 第3章 c++世界众生相


    第3章 c++世界众生相


    3.1 c++中的数据类型

    p54 把string作为基本数据类型,是不可以嘀。

    在C语言中,基本数据类型,只有两个:数、字符

    在Cpp中,基本数据类型,是三个:数、字符、bool

    3.2 变量和常量
    3.2.1 声明变量
    3.2.2 给变量取个好名字
    3.2.3 变量初始化

    /* p57
    Cpp和C,还是有很大不同。
    声明变量,随时,不必都放在头部。
    可以在声明时,用()赋初值。这是对象的功能,以后会说到。。
    return 0,不再成为必须。。但在VC6中,还是要的。。
    */
    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
      int ia=2;
      cout<<ia<<endl;
      int ib(3);  
      cout<<ib<<endl;  
      string sa="aha";
      cout<<sa<<endl;
      string sb("haha");
      cout<<sb<<endl;
      return 0;
    }

    3.2.4 常量

    #include <iostream>
    using namespace std;
    int main()
    {
      int i;
      i=011; //前面加0,变成八进制
      cout<<i<<endl;
      i=0x11; //前面加0x,变成16进制
      cout<<i<<endl;
      return 0;
    }
    //p59
    #include <iostream>
    using namespace std;
    int main()
    {
      cout << "hello
    ";
      cout << "x:\test\test.ha
    "; //嗯,现在知道为啥路径要这样写了吧?
      cout << "aha say:"yes!"" << endl;
      return 0;
    }


    3.2.5 用宏与const关键字定义常量

    //p61
    #include <iostream>
    #define PI 3.14159 //句末木有分号!
    const double P=3.14159; //鼓励用这种
    using namespace std;
    
    int main()
    {
      double r=1.0;
      cout<<PI*r*r<<endl;
      cout<<P*r*r<<endl;
      return 0;
    }

    3.3 数值类型
    3.3.1 整型数值类型

    //p63
    #include <iostream>
    using namespace std;
    
    int main()
    {
      //严格来说,int占几个字节,取决于机型、系统。。。但现在,一般占四个字节
      //这本书的错误,不是一般的多,难怪很多人在骂。。。但找出错误,也是一种学习方法。。。
      long i(3); //写long与写int,效果一样
      cout << i << endl;
      cout << sizeof(int) << endl; //4
      cout << sizeof(short int) << endl;  
      cout << sizeof(long int) << endl; //4 long int 和 int 效果一样  
      cout << sizeof(long long int) << endl; //8 int 可不写
      return 0;
    }

    3.3.2 浮点型数值类型

    /*
    几个实数类型中,一般鼓励用double,不差几个字节
    只是在读取与输出时,要注意格式。
    */
    //p64
    #include <iostream>
    #include <stdio.h>
    using namespace std;
    
    int main()
    {
      cout << sizeof(float) << endl; //4
      cout << sizeof(double) << endl; //8  
      cout << sizeof(long double) << endl; //12 书中说10,又错了。。
      double a,b;
      scanf("%lf%lf",&a,&b);
      printf("%0.0lf",a+b);
      return 0;
    }

    3.4 布尔类型

    /*
    书中的这个代码例子,实在不敢恭维。。
    */
    //p64
    #include <iostream>
    using namespace std;
    
    bool iseven(int i)
    {
      return( 0==i%2 );
    }
    
    int main()
    {
      int i,sum=0;
      for(i=0;i<=100;++i)
        if(iseven(i)) ++sum;
      cout << sum << endl;
      cout << iseven(3) << " " << iseven(4) << endl; //false为0,true为1
      cout << sizeof(bool) << endl; //只占一个字节。所以当整数用是很危险的
      return 0;
    }

    3.5 字符串类型
    3.5.1 字符类型

    //p66
    #include <iostream>
    using namespace std;
    int main()
    {
      char a='a';
      cout << a << endl;
      cout << a+3 << endl; //没有ord函数,字符可以直接拿来加减
      cout << sizeof(a) << endl; // 1 
      //
      wchar_t ha=L'';
      //wcout.imbue(locale("chs"));
      //wcout<<ha<<endl; //书中例子,不能输出中文。这个不要求,随意了。。
      cout << sizeof(ha) << endl; // 2
      return 0;
    }

    3.5.2 字符串类型

    //p66
    #include <iostream>
    #include <string>
    #include <wstring> //找不到这个头文件
    using namespace std;
    int main()
    {
      string str("Good Morning!");
      cout << str << endl;
      wstring strc(L"");
      wcout.imbue(locale("chs"));
      wcout<<strc<<endl;
      return 0;
    }

    3.6 数组
    3.6.1 数组的声明与初始化

    //p69
    #include <iostream>
    using namespace std;
    int main()
    {
      int i,j,a[2][3]={{0},{0}};
      for(i=0;i<2;i++)
      {
        for(j=0;j<3;j++)
          cout<<a[i][j]<<" ";  
        cout << endl;
      }
      return 0;
    }

    3.6.2 数组的使用
    3.7 枚举类型

    //p72 书里代码有语法错误
    #include <iostream>
    using namespace std;
    int main()
    {
      enum weekday
      {
        mon=3,tue,wed,thu,fri,sat,sun // mon=3
      };
      weekday nday;
      nday=sun;
      cout << nday << endl;
      return 0;
    }

    3.8 用结构体类型描述复杂的事物
    3.8.1 结构体的定义
    3.8.2 结构体的使用

    //p75 简化了一下
    #include <iostream>
    #include <string>
    using namespace std;
    
    struct emplyee
    {
      string name;
      int age;
    };
    
    int main()
    {
      emplyee a[3];
      int i;
      for(i=0; i<3; i++)
      {
        cin>>a[i].name;
        cin>>a[i].age;
      }
      for(i=0; i<3; i++)
        cout<<a[i].name<<" "<<a[i].age<<endl;
      return 0;
    }

    3.9 指向内存位置的指针
    3.9.1 指针就是表示内存地址的数据类型
    3.9.2 指针变量的定义
    3.9.3 指针的赋值和使用

    //p80
    #include <iostream>
    using namespace std;
    
    int main()
    {
      int i(3),*p;
      p=&i;
      cout << p << endl; //会自动以16进制形式输出地址
      i=5;
      cout << *p << endl; //输出地址p中的值
      return 0;
    }
    //p80
    #include <iostream>
    using namespace std;
    
    typedef struct emplyee
    {
      string name;
      int age;
    } emplyee;
    
    int main()
    {
      emplyee a[3],*p; //p是emplyee类型的指针
      int i;
      for(i=0; i<3; i++)
      {
        cin>>a[i].name;
        cin>>a[i].age;
      }
      p=a; //即 p=&a[0],p先指向结构数组中的第一个元素
      for(i=0; i<3; i++)
      {
        cout<<p->name<<" "<<p->age<<endl;
        p++; //指针加1,会跳到下一个结构位置
      }
      return 0;
    }

    TOP

  • 相关阅读:
    Python long() 函数
    Python frozenset() 函数
    java对象和构造方法的区别
    回顾方法和方法调用及加深
    面向过程&面向对象
    稀疏数组
    冒泡排序与八大排序
    Arrays类与常用功能
    二维数组的理解代码
    数组的使用
  • 原文地址:https://www.cnblogs.com/xin-le/p/4077678.html
Copyright © 2020-2023  润新知