篮球外围下注_篮球投注导航_[所有网址]

篮球外围下注_篮球投注导航_[所有网址]是该公司为打造信誉第一,2014最新体验金,篮球外围下注_篮球投注导航_[所有网址]这里的所有老虎机游戏及真人百家乐游戏都具有欧洲风格,致力成为最具传播力和互动性的娱乐城网站。

【C语言】06-基本数据类型

2019-07-31 19:50 来源:未知

说明:这个C语言专题,是学习iOS开发的前奏。也为了让有面向对象语言开发经验的程序员,能够快速上手C语言。如果你还没有编程经验,或者对C语言、iOS开发不感兴趣,请忽略

 

C语言有丰富的数据类型,因此它很适合用来编写数据库,如DB2、Oracle等大型数据库都是C语言写的。其中,提供了4种最常用的基本数据类型:char、int、float、double,使用这些数据类型,我们就可以定义相应的变量来存储数据。这讲就来深入研究一下基本数据类型的一些使用细节。

C语言有丰富的数据类型,因此它很适合用来编写数据库,如DB2、Oracle都是C语言写的。

C语言有丰富的数据类型,因此它很适合用来编写数据库,如DB2、Oracle都是C语言写的。

一、取值范围

我们已经知道,不同数据类型所占的存储空间是不一样的。比如在64bit编译器环境下,char类型占用1个字节,int类型占用4个字节。字节长度不一样,包含的二进制位数就不一样,能表示的数据范围也就不一样。因此,int类型能表示的数据范围肯定比char类型大。下面来简单算算64bit编译器环境下int类型的取值范围。

C语言的数据类型大致可以分为下图中的几类:

C语言的数据类型大致可以分为下图中的几类:

1.推算int类型的取值范围

int类型占用4个字节,所以一共32位,那么按理来说,取值范围应该是:0000 0000 0000 0000 0000 0000 0000 0000~1111 1111 1111 1111 1111 1111 1111 1111,也就是10进制的0 ~ 232 - 1。但是int类型是有正负之分的,包括了正数和负数,那怎么表示负数呢?就是拿最高位来当符号位,当最高位为0就是正数,最高位为1则是负数。即:1000 0000 1001 1011 1000 0000 1001 1011就是一个负数,0000 1001 0000 1101 0000 1001 0000 1101是一个正数。由于最高位是0才代表正数,因此最大的正数是0111 1111 1111 1111 1111 1111 1111 1111,也就是231 - 1。而最小的负数就是1000 0000 0000 0000 0000 0000 0000 0000,也就是-231(为什么是这个值呢?可以根据前面章节提到的负数的二进制形式,自己去换算一下,看看1000 0000 0000 0000 0000 0000 0000 0000是不是-231。算不出也不用去纠结,不影响写代码,知道有这么一回事就完了)。因此,int类型的取值范围是-231 ~ 231 - 1。

注意:这个推算过程是不用掌握的,大致知道过程就行了,而且这个结论也不用去记,大致知道范围就行了。

 

图片 1

图片 2

2.各种数据类型的取值范围

int类型的取值范围已经会算了,那么其他数据类型的取值范围就能够以此类推。

图片 3

(注:float和double由于是小数,它们的存储方式是特别不一样的,所以它们取值范围的算法也很不一样,这里不做介绍,也不用去掌握。e38表示乘以10的38次方,e-38表示乘以10的负38次方。)

上面表格中列出的只是64bit编译器环境下的情况。如果你的编译器是16bit或者32bit,这些数据类型的取值范围肯定是不一样的。比如int类型,在16bit编译器环境下是占用2个字节的,共16bit,所以int类型的取值范围是:-215 ~ 215 - 1。

 

一、变量

跟其他语言一样,C语言中用变量来存储计算过程使用的值,任何变量都必须先定义类型再使用。为什么一定要先定义呢?因为变量的类型决定了变量占用的存储空间,所以定义变量类型,就是为了给该变量分配适当的存储空间,以便存放数据。比如你是char类型,我就只给你分配1个字节就够了,没必要分配2个字节、3个字节乃至更多的存储空间。

下面的表格描述了在16位编译器环境下,基本数据类型所占用的存储空间,了解这些细节,对以后学习指针和数组时是很有帮助的

图片 4

需要注意的是:

 

3.数值越界

1.局部变量的使用跟Java稍微有点不一样

1> 在Java中,你声明了一个局部变量后,如果没有经过初始化赋值就使用该变量,编译器直接报错

图片 5

第9行报错了,因为变量a没有初始化

 

2> 在C语言中,你声明看一个局部变量后,没有经过初始化赋值是可以使用的

1 #include <stdio.h>  2   3 int main()  4 {  5     int b;             6     printf("%d", b);  7     return 0;  8 }

但这是很危险的,不建议这样做。大多数人应该觉得变量b打印出来应该是0,其实不是。因为系统会随意给变量b赋值,得到的是垃圾数据。

上述代码的打印结果是:图片 6因此,局部变量还是必须先进行初始化赋值,然后再使用,这样才是最安全的做法。

* 如果是全局的int类型变量,系统会默认赋值为0

图片 7

 

 

1> 例子演示

前面已经看到,每种数据类型都有自己的取值范围。如果给一个变量赋值了一个超出取值范围的数值,那后果会不堪设想。

1 #include <stdio.h>  2   3 int main()  4 {  5     int c = 1024 * 1024 * 1024 * 4;  6       7     printf("%dn", c);  8     return 0;  9 }

 

我们都知道,int类型能保存的最大值是231-1。在第5行给int类型的变量c赋值一个比231-1大的数值:232 (1024是210

先看看在终端中的输出结果:图片 8,可以看出输出的值是0。

 

2.char的取值范围是:ASCII码字符 或者 -128~127的整数

于是,使用char存储大写字母A有2种赋值方式:

// 方式1  char c = 'A';    // 方式2  char c = 65;

上面两种方式是等效的,因为大写字母A的ASCII码值刚好为65。点击查看ASCII码表的所有值。

 

一、不同编译器环境下基本数据类型的存储长度

红色的代表常用的数据类型

图片 9

 

在64位编译器环境下,short占2个字节(16位),int占4个字节(32位),long占8个字节(64位)。世界上的编译器林林总总,不同编译器环境下,取值范围和占用的长度是不一样的,不过幸运的是,ANSI ISO制定了以下规则:

* short跟int至少为16位(2字节)

* long至少为32位(4字节)

* short的长度不能大于int,int的长度不能大于long

* char一定为为8位(1字节),毕竟char是我们编程能用的最小数据类型

 

 

2> 结果分析

我们可以简单分析一下为什么将232赋值给变量c之后输出的是0。232的 二进制形式是:1 0000 0000 0000 0000 0000 0000 0000 0000,一共有33位二进制数。变量c占用了4个字节,只能容纳32位二进制数,而且内存寻址是从大到小的,因此,变量c在内存中的存储形式是0000 0000 0000 0000 0000 0000 0000 0000,也就是0,最前面的那个1就不属于变量c的了。

图片 10

 

3.char只能存储一个字符

汉字或者字符串需要用字符数组来存储,因为一个汉字占了2个字符,一个字符串是由一个或者多个字符组成的。

因此,下面的写法都是错误的:

char c1 = '我';  char c2 = '123';  char c3 = "123";

 

二、变量

C语言中用变量来存储计算过程使用的值,任何变量都必须先定义类型再使用。为什么一定要先定义变量呢?因为变量的类型决定了变量占用的存储空间,所以定义变量类型,就是为了给该变量分配适当的存储空间,以便存放数据。

 

3> 结论

可以发现,如果超出了变量的取值范围,那么将损失精度,得到“垃圾数据”(“垃圾数据”就是指并非我们想要的数据)。可是,有时候我们确实要存储一个很大很大的整数,比231-1还大的整数,这该怎么办呢?这个就要用到类型说明符,这这讲的后面会讨论。

 

二、类型修饰符

我们还可以在基本数据类型的前面加一些修饰符,也有人称之为限定符,一样的意思。

有以下4种类型修饰符:

  • short  短型
  • long  长型
  • signed  有符号型
  • unsigned  无符号型

1.局部变量的使用跟Java稍微有点不一样

1> 在Java中,你声明了一个局部变量后,如果没有经过初始化赋值就使用该变量,编译器直接报错

图片 11

第9行报错了,因为变量a没有初始化

 

2> 在C语言中,你声明看一个局部变量后,没有经过初始化赋值是可以使用的

图片 12

1 #include <stdio.h>
2 
3 int main()
4 {
5     int b;           
6     printf("%d", b);
7     return 0;
8 }

图片 13

但这是很危险的,不建议这样做。大多数人应该觉得变量b打印出来应该是0,其实有时候不是。因为系统会随意给变量b赋值,得到的是垃圾数据。

上述代码的打印结果是:图片 14因此,局部变量还是必须先进行初始化赋值,然后再使用,这样才是最安全的做法。

* 如果是全局的int类型变量,系统会默认赋值为0

图片 15

 

 

二、char

1.用法演示

这些修饰符最常是用来修饰int类型(可以省略int)

 1 // 下面两种写法是等价的   2 short int s1 = 1;   3 short s2 = 1;   4    5 // 下面两种写法是等价的   6 long int l1 = 2;   7 long l2 = 2;   8    9 // 可以连续使用2个long  10 long long ll = 10;  11   12 // 下面两种写法是等价的  13 signed int si1 = 3;  14 signed si2 = 3;  15   16 // 下面两种写法是等价的  17 unsigned int us1 = 4;  18 unsigned us2 = 4;  19   20 // 也可以同时使用2种修饰符  21 signed short int ss = 5;  22 unsigned long int ul = 5;

 

二、类型修饰符

  即在基本数据类型的前面加一些修饰符,也有人称之为限定符

有以下4种类型修饰符:

  • short  短型
  • long  长型
  • signed  有符号型
  • unsigned  无符号型

 

1.简单使用

char是C语言中比较灵活的一种数据类型,称为“字符型”。既然叫“字符型”,那肯定是用来存储字符的,因此我们可以将一个字符常量赋值给一个字符型变量。

1 #include <stdio.h>  2   3 int main()  4 {  5     char c = 'A';  6       7     printf("%cn", c);  8     return 0;  9 }

在第5行定义了一个char类型变量c,并将字符常量'A'赋值给了c。在第7行将字符变量c输出到屏幕,%c的意思是以字符的格式输出。

输出结果:图片 16

 

2.short和long

1> short和long可以提供不同长度的整型数,也就是可以改变整型数的取值范围,比如short的取值范围是-32768~32767,long的取值范围就是-2147483648~2147483647

2> 当然,数据的存储长度也会跟着变化。比如,在64位编译器环境下,short占2个字节(16位),int占4个字节(32位),long占8个字节(64位)。世界上的编译器林林总总,不同编译器环境下,取值范围和占用的长度是不一样的,不过幸运的是,ANSI ISO制定了以下规则:

* short跟int至少为16位(2字节)

* long至少为32位(4字节)

* short的长度不能大于int,int的长度不能大于long

* char一定为为8位(1字节),毕竟char是我们编程能用的最小数据类型

 

示例:

这些修饰符最常是用来修饰int类型(可以省略int)

1 // 下面两种写法是等价的
 2 short int s1 = 1;
 3 short s2 = 1;
 4 
 5 // 下面两种写法是等价的
 6 long int l1 = 2;
 7 long l2 = 2;
 8 
 9 // 可以连续使用2个long
10 long long ll = 10;
11 
12 // 下面两种写法是等价的
13 signed int si1 = 3;
14 signed si2 = 3;
15 
16 // 下面两种写法是等价的
17 unsigned int us1 = 4;
18 unsigned us2 = 4;
19 
20 // 也可以同时使用2种修饰符
21 signed short int ss = 5;
22 unsigned long int ul = 5;

 

 

 signed代表有符号,包括正数、负数和0;unsigned代表无符号,只包括正数和0。比如,signed的取值范围是-32768~32767,那么unsigned的取值范围是0~65535,当然,不同的编译器有不同的取值范围

 

2.字符常量一定要用单引号括住

1> 下面的写法是错误的:

1 int main()  2 {  3     char c = A;  4     return 0;  5 }

编译器会直接报第3行的错,错误原因是:标识符A找不到。你直接写个大写A,编译器会认为这个A是一个变量。因此写成'A'才是正确的,或者在第3行代码的前面再定义1个变量名叫做A的char类型变量。

2> 下面的写法也是错误的:

1 int main()  2 {  3     char c = "A";  4     return 0;  5 }

第3行中的"A"并不是字符常量,而是字符串常量,将字符串"A"赋值给字符变量c是错误的做法。字符串和字符的存储机制不一样,因此"A"和'A'是有本质区别的。

 

TAG标签: 篮球外围下注
版权声明:本文由篮球外围下注发布于系统,转载请注明出处:【C语言】06-基本数据类型