码迷,mamicode.com
首页 > 其他好文 > 详细

数据、基本数据类型、常量和变量

时间:2015-08-21 10:50:28      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:

一、数据

  图片文字等都是数据,在计算机中以0和1存储。

  1.分类

    数据分为静态数据和动态数据。

      (1) 静态数据:一些永久性的的数据,一般存储在硬盘中,只要硬盘没坏数据都是存在的。一般以文件的形式存储在硬盘上,电脑关机重启后依然存在。

      (2) 动态数据:程序运行过程中,动态产生的的临时数据,一般存储在内存中,内存的存储空间一般较小,计算机关闭后这些数据就会被清除。软件或者电脑关闭则这些临时数据会被清除。

      (3) 静态数据和动态数据可以转换。

       注意:为什么不把动态数据存放到硬盘?因为直接访问内存的速度更快。软件安装在硬盘,运行在内存。程序员应该更加关心内存数据。

  2.数据大小

    (1) 所有的数据都是由0和1组成的。

    (2) 数据都有大小,静态数据占硬盘空间,动态数据占内存空间。

    (3)数据越大,包含的0和1就越多,

    (4) 存储数据的单位是比特位和字节。一个1或者0就是一个比特位,即1bit。

    (5) 计算机中,以字节为单位存储数据。1字节=8比特位(1Byte=8bit)。

    (6)1TB=1024GB,1GB=1024MB,1MB=1024KB,1KB=1024B。

 

二、数据类型

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

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

技术分享

 

三、常量

  1.定义:常量表示固定的数据。

  2.分类

    (1) 整型常量    如6,27,-299

    (2) 浮点型常量  如5.43,-2.3,5.67f

    (3) 字符常量    如‘6’,‘a’,‘F’(不能是中文如‘男’)

    (4) 字符串常量  如“6”,“男”,“nanabc”

 

四、变量

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

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

#include <stdio.h>

int main()
{
    int b;           
    printf("%d", b);
    return 0;
}

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

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

 

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

  技术分享

 

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

    (1)使用char存储大写字母A有2种赋值方式:

// 方式1
char c = A;

// 方式2
char c = 65;

  上面两种方式是等效的,因为大写字母A的ASCII码值刚好为65。

    (2)char只能存储一个字符

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

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

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

 

五、类型修饰符

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

有以下4种类型修饰符:

    (1)short  短型

    (2)long  长型

    (3)signed  有符号型

    (4)unsigned  无符号型

 

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

// 下面两种写法是等价的
short int s1 = 1;
short s2 = 1;

// 下面两种写法是等价的
long int l1 = 2;
long l2 = 2;

// 可以连续使用2个long
long long ll = 10;

// 下面两种写法是等价的
signed int si1 = 3;
signed si2 = 3;

// 下面两种写法是等价的
unsigned int us1 = 4;
unsigned us2 = 4;

// 也可以同时使用2种修饰符
signed short int ss = 5;
unsigned long int ul = 5;

 

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

 

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

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

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

    (3) short的长度不能大于int,int的长度不能大于long

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

 

  5.signed和unsigned

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

    (2)其实,signed和unsigned的区别就是它们的最高位是否要当做符号位,并不会像short和long那样改变数据的长度,即所占的字节数。

  6.signed、unsigned也可以修饰char,long还可以修饰double

unsigned char c1 = 10;
signed char c2 = -10;

long double d1 = 12.0;

 

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

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

技术分享

数据、基本数据类型、常量和变量

标签:

原文地址:http://www.cnblogs.com/songshuhaoNB/p/4746839.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!