zoukankan      html  css  js  c++  java
  • 1、变量和基本类型

    类型主要是用来告诉我们数据代表什么意思,对数据该执行什么操作。

    1.1 基本数据类型

    C++中有布尔型、字符型、整型、浮点型等。(其中整数、字符和布尔的算术类型合称为整型).它与在计算机存储器中的表示方式紧密相关。计算机以位序列存储数据,每位存储0或1.通常在计算机中int存储长度为1个机器字长。

     

     1 #include <iostream> 
     2 using namespace std;
     3 int main()
     4 {
     5     bool bl=true;
     6     char cr='s';
     7     short st=1;
     8     int i=0;
     9     long lg=1;
    10     float ft=1.0;
    11     cout<<sizeof(bl)<<endl;
    12     cout<<sizeof(cr)<<endl;
    13     cout<<sizeof(st)<<endl;
    14     cout<<sizeof(i)<<endl;
    15     cout<<sizeof(lg)<<endl;
    16     cout<<sizeof(ft)<<endl;
    17     return 0;
    18 }

    其在计算机中存储的长度为:

    1

    1

    2

    4

    4

    4

    1.2 越界处理

    当我们给指定类型赋值,但是超过了指定类型的长度,那么编译器就会对其的可能取值数目求模,然后取得所求值。

    例如:

     1 #include <iostream> 
     2 #include <iomanip>
     3 using namespace std;
     4 int main()
     5 { 
     6     unsigned char cr='a';
     7     cout<<setw(20)<<(int)cr<<endl;
     8     cr=300;
     9     cout<<setw(20)<<(int)cr<<endl;
    10     cin>>cr;
    11     return 0;
    12 }

    对于第6行,根据char的模的值为256,若把数据类型改为signed,输出结果相同,为:

    97

    44

    但是倘若我们的cr的值在第8行若为赋值,那么结果就会有所不同了。如当cr的值为-1时:

    对于signed char其值的表示范围为-128-127,那么输出结果为:

    97

    -1

    对于unsigned char其值的表示范围为0-255,那么输出结果为:

    97

    255

    1.3 类型检查

    C++是一种静态类型语言,在编译时会做类型检查。在操作时,数据类型以及表达式是否合法是通过编译器检查的,如果不合法,那么编译器就会提示错误,而不会产生可执行文件。所以,在我们使用变量的时候必须首先确定变量的类型。

    1.4 初始化

    对于变量定义,我们要确定他的类型和标识符(可以是字母、数字、下划线),当然还可以给对象提供一个初始值。初始化变量有两种方式:

      直接初始化 int i(0); 

      复制初始化 int i=0; 

    1     string all_nines=(3,'9');//直接初始化,里面通过一个计数器和一个‘9’字符初始化对象。   与第二行的表达式等价。
    2     string all_nines="999";//复制初始化
    3     cout<<all_nines<<endl;

    在以往中经常使用例如int i=0;但是要搞清楚,初始化不是赋值,赋值是擦除对象的当前值,然后再给他赋予新值。直接初始化的语法更灵活且效率更高。对于内置类型的来说,直接初始化与复制初始化几乎没有什么差别。对于类类型有些初始化只能用直接初始化。

    1.5 变量的声明和定义

       变量的定义:用于为变量分配存储空间,还可以为其指定初始值。

       变量的声明:只是用来向程序表明变量的类型和名字。可以使用extern关键字声明变量名而不定义它,也就是说extern并没有在内存里开辟空间,只有当extern位于函数外才可以包含初始化式。例如可定义为:extern int i=1;

       程序中可以多次声明,但是只能定义一次。

    1 extern int i;//申明但是并不定义
    2 int i;//申明

    在多个文件中使用的变量都需要与定义分离的声明。在这种情况下,一个文件含有变量的定义,使用该变量的其他文件则包含该变量的声明(而不是定义)。

    1.6 引用

    非const引用只能绑定到与该引用相同的类型。

    const引用可以绑定到不同但相关的类型的对象或绑定到右值。

     1     int ival1=2;     //引用就是别名
     2     double dval=2.3;
     3     int &ival2=ival1;
     4     const int x=2;  //const是指向const对象的引用
     5     const int &x1=x;
     6     const int &x2=x1+ival1; 
     7   //int &val=dval; 非const对象只能引用到同类型
     8     const int &val=dval;
     9     cout<<ival2<<endl;
    10     cout<<x1<<endl;

     1.7 typedef名字

    typedef可出现在程序的任何位置,其本身并没有引入新的类型,只是现有数据类型的别名。

    目的:

    隐藏特定类型的实现,强调使用目的。

    简化复杂类型定义,便于理解。

    允许一种类型用于多个目的,同时使得每次使用该类型的目的更明确。

  • 相关阅读:
    PHP Session 变量
    PHP Cookie是什么
    PHP 文件上传
    PHP 文件处理
    PHP include 和 require 语句
    Mac pycharm专业版安装以及破解方法
    bzoj3946: 无聊的游戏
    win10 uwp 九幽图床
    win10 uwp 九幽图床
    git无法pull仓库refusing to merge unrelated histories
  • 原文地址:https://www.cnblogs.com/songxxu/p/4155077.html
Copyright © 2011-2022 走看看