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;
时间: 2024-10-29 10:46:36

1、变量和基本类型的相关文章

由浅入深JavaScript——变量和原始类型

JavaScript变量 JavaScript变量标识符标识符 var + 变量名称来定义变量.变量名称以字母,下划线_,美元$符号开头,余下字符可以是字母,数字,下划线,美元符号.eg: var  name = 'hello';     var  a1 = 'hello';    var  _test = 'hello';    var  $test = 'hello';    以上变量名称均为正确.    var  1a = 'hello'; //数字开头错误.    JavaScript允

第2章 变量和基本类型

2015-10-08 20:18:32 注:  之前解除过C++比较少,只学过C语言. ----------------------------------------------------------- 内置类型是编程语言自己定义的一些类型,不需要我们自己定义了. 比如bool.int: 空类型Void  不对应具体的值,仅用于特殊的场合,例如最常见的是,当函数不反悔任何值时使用空类型作为返回值. 使用浮点数时,选用double---因为float的精度不够,且计算的时候,双精度和单精度的代

C++ Primer学习总结 第1-2章 变量和基本类型

第1-2章 变量和基本类型 1.下面这个语句在C++98和C++11中的输出结果不同. C++98结果: (如果想要更高的精度,可以用%.9lf,输出9位有效数字) C++11结果: 结论: printf的%lf在C++11中表示longdouble,所以用中%f就可以输出float和double类型.而printf在C++98中可以用%lf正确输出double. 如果是scanf的话,不论C++98还是C++11中float都用%f读取,double都用%lf读取,因为二者结构不同.   2.

判断一个变量是数组类型的方法

在很多时候,我们都需要对一个变量进行数组类型的判断(借鉴) 学过js就应该知道typeof运算符返回字符串,该字符串代表操作数的类型(即返回数据类型)这是最常用的. 下面多种实现方式: JavaScript中检测对象的方法 1.typeof操作符 这种方法对于一些常用的类型来说那算是毫无压力,比如Function.String.Number.Undefined等,但是要是检测Array的对象就不起作用了. alert(typeof null); // "object" alert(ty

PHP内核探索:变量存储与类型

先回答前面一节的那个问题吧. 01 <?php 02 $foo = 10; 03 $bar = 20; 04    05 function change() { 06     global $foo; 07     //echo '函数内部$foo = '.$foo.'<br />'; 08     //如果不把$bar定义为global变量,函数体内是不能访问$bar的 09     $bar = 0; 10     $foo++; 11 } 12    13 change(); 14

在类中成员变量的作用域类型

作用域类型一共有四种 1,@public 在任何地方都能直接通过成员变量名直接访问成员变量.(不推荐使用) 2,@private 只能在当前类的对象方法中直接通过成员变量名访问成员变量,在其他地方需要通过geter和seter方法访问.(@implementation中被声明成员变量的默认类型) 3,@protected 只能在当前类及其子类的对象方法中直接通过成员变量名访问成员变量,在其他地方需要通过geter和seter方法访问.(@interface中被声明成员变量的默认类型) 4,@pa

C++ Primer 学习笔记_5_变量和基本类型(续2)

 变量和基本类型 七.枚举 枚举不但定义了整数常量集,并且还把它们聚集成组. 枚举与简单的const常量相比孰优孰劣, 通过以下一段代码. 一看便知: [cpp] view plaincopyprint? enum {input, output, append}; const int input = 0; const int output = 1; const int append = 2; enum {input, output, append}; const int input = 0;

C++primer笔记2:变量和基本类型、字符串,向量和数组、表达式、类

第2章:变量和基本类型 char 8位 bool 未定义 short 短整型16 int 整型16 long 长整型32 long long 长整型64 C++11新定义的 float: 1个字 32位 6位有效位 double: 2个字 64位 10位有效位 long double: 10位有效位 带符号和不带符号的 unsigned 不带符号 仅仅表示大于0的 signed 带符号 大于,小于,0 基本字符集 :比特位 可寻址的最小内存块:字节 8比特 存储的基本单位 :字 32或64比特

C++ Primer 笔记(2)第二章 变量与基本类型

第二章 变量与基本类型 1.基本内置类型包括算术类型和空类型,算术类型分为两类:整型(包括字符和布尔类型)和浮点型: 2.布尔类型(bool)的取值是真(true)或者假(false): 3.字面值常量:每个字面值常量都对应一种数据类型,字面值常量的形式和值决定了它的数据类型, 由单引号括起来的一个字符是char型字面值,有双引号括起来的零个或者多个字符则构成字符串字面值: 20  整形字面值 ‘a’ 字符字面值 “Hello World”或者“”都会字符串字面值 ‘A’表示单独字符A,而“A”

Lex与Yacc学习(八)之变量和有类型的标记(扩展计算器)

变量和有类型的标记 下一步扩展计算器来处理具有单个字母名字的变量,因为只有26个字母 (目前只关心小写字母),所以我们能在26个条目的数组(称它为vbltable)中存储变量. 为了使得计算器更加有用,也可以扩展它来处理多个表达式(每行一个)和使用浮点值. 具有变量和实值的计算器词法ch3-03.l %{ #include "ch3-03.tab.h" #include <math.h> extern double vbltable[26]; %} %% ([0-9]+|(