数据类型基础

目录

1.常量和变量

1.1常量

1.2 变量

2.整型常量(3种)

2.1整型常量进制间的转换

2.1.1 十进制==>二进制

2.1.2 二进制 ==>十进制

2.1.3 二进制 <==>八进制

2.1.4 二进制 <==>十六进制

3.整型变量

3.1 定义变量

3.1.1语法

3.1.2 整型数据类型(八种)

3.1.2.1 数据类型的大小

3.1.3 变量名

 附:32个关键字

3.2 变量给值

4.整数数据存储

附:打印格式

5.考点

5.1 整数溢出

5.2 整数存储和使用分开的

6.浮点型

6.1 浮点型 常量形式

6.2 浮点型变量

6.2.1 关键字

6.2.2 定义变量

6.2.3 浮点数的存储

6.2.4 浮点数的比较

7.字符型

7.1 常用的ASCII码

7.2 字符型变量

7.3 应用


1.常量和变量

1.1常量

在程序运行过程中,其值不能被改变的量。

1.2 变量

在程序运行过程中,其值能被改变的量。

2.整型常量(3种)

123          ---十进制的整型常量

0x123      ---十六进制的整数常量

0123        ---八进制的整数常量

进制:逢几进一

2.1整型常量进制间的转换

2.1.1 十进制==>二进制

方法:除二取余法(辗转相除法)

eg:106(0110 1010)

         106        

            |53           ---0        (低位)

               |26        ---1

                  |13     ---0

                     |6     ---1

                       |3   ---0

                        |1  ---1 

                        |0  ---1      (高位)

2.1.2 二进制 ==>十进制

方法:加权求和

eg:1010

2^3+2^1 = 10

2.1.3 二进制 <==>八进制

对应关系:1位八进制数对应3位二进制数

eg:001 111 011

          1     7     3

2.1.4 二进制 <==>十六进制

对应关系:1位十六进制数对应4位二进制数

eg:0111 1011

            7      b

3.整型变量

3.1 定义变量

3.1.1语法

数据类型 变量名;

int a;
3.1.2 整型数据类型(八种)

有符号和无符号

        int <=> signed int

        short

        long

        long long 

3.1.2.1 数据类型的大小

sizeof(运算数):计算运算数所代表的数据类型占用的内存空间的字节数。

注:运算数可以是一个类型名,变量名及常量或者表达式

#include<stdio.h>

int main(void)
{
    printf("sizeof(int) = %ld\n",sizeof(int));
    printf("sizeof(short) = %ld\n",sizeof(short));
    printf("sizeof(long) = %ld\n",sizeof(long));
    printf("sizeof(long long) = %ld\n",sizeof(long long));

    return 0;
}

运行结果:

int             4字节

short         2字节

long          8字节

long long  8字节

3.1.3 变量名

(1)由数字、字母、下划线组成

(2)不能以数字开头

(3)不能与关键字重名

(4)不要与预处理命令及库函数重名

 附:32个关键字

3.2 变量给值

int a = 10;   // 定义时给值  初始化

int a;
a = 10;       //赋值

变量实际上对应的是一块可以被修改的空间。

4.整数数据存储

以小端存储:高高低低  ---- 高位数据存在高地址处,地位数据存在低地址处

int a = 123;   // 00 00 00 7b

整数类型数据计算机最终以补码形式存储。

正数:原码,反码,补码都是一样的。

负数:补码 = 反码+1

无符号数:所有的二进制位都是数值位;

有符号数:最高位充当符号位,其余都是数值位。(0表示正数,1表示负数)

例:以int型为例

eg  :  -6735

原码:1000 0000 0000 0000 0001 1010 0100 1111

反码:1111 1111 1111 1111 1110 0101 1011 0000   (符号位不变,数值位按位取反)

补码:1111 1111 1111 1111 1110 0101 1011 0001   (反码 + 1)

 测试代码:                    

#include<stdio.h>

int main(void)
{
    int a = -6735;
    printf("a = %#x\n",a);

    return 0;
}

测试结果:

unsigned char a = 65535;
    a [ 1111 1111 1111 1111 ]
           |
          %hd    //d 表示以有符号十进制形式来打印   
           |
       1|111 1111 1111 1111
           |
        最高位是1 表示 这个值 一定是 某个负数 的补码值
        最终打印的一定是原码值 
        1|111 1111 1111 1111
        1|000 0000 0000 0001  // -1

#include<stdio.h>

int main(void)
{
    unsigned char a = 65535;
    printf("a = %hd\n",a);

    return 0;
}

运行结果:

附:打印格式

%d        ----- 以有符号十进制整数形式打印

%hd      ----- 打印有符号十进制整数占2字节

%#x      ----- 以十六进制整数形式打印

%u        ----- 以无符号十进制整数形式打印

5.考点

5.1 整数溢出

eg:short 类型数据大小为2字节 16位

        65535 (1111 1111 1111 1111)再加上1就会溢出

成为:1 0000 0000 0000 0000

结果就是 0;

#include<stdio.h>

int main(void)
{
    unsigned short a = 65535;
    a = a+1;
    printf("a = %hd\n",a);

    return 0;
}

运行结果:

5.2 整数存储和使用分开的

unsigned short a = 65535;   //1111 1111 1111 1111 
unsigned short b = -65535;  // 先不管前面数据类型,将-65535的最高位看作符号位,其余位看作数值位,按位取反,+1,得到-1,这就是b的原码。

6.浮点型

6.1 浮点型 常量形式

 1.23

1.23e-4     ----科学计数法形式 1.23 * 10^-4

1.23E-4

6.2 浮点型变量

6.2.1 关键字

float               ----- 单精度(4字节)

double           ----- 双精度(8字节)

long double    -----           (16字节)

6.2.2 定义变量

关键字  变量名;

float f;
6.2.3 浮点数的存储

(1)首先将十进制形式的小数,写成二进制形式小数

        整数:除二取余法

        小数:乘二取整法

eg :12.125

12  ---  1100

0.125 *2 = 0.25 --- 0

0.25*2    = 0.5   --- 0

0.5 * 2    = 1      --- 1

1100.001

(2)将二进制形式的小数写成科学计数法形式 

1.100001 * 2 ^ 3

(3)按照IEEE754标准存放

float :(4字节 32位)

1位      |   8位  充当 指数位                   | 23位

符号位 |  指数位 +127(偏移量 )        | 尾数位

0          |   10000010                              | 100001

尾数位不足23位,后加0补全。

0100 0001 0100 0010 0000 0000 0000 0000

   4       1         4       2     0        0      0        0

double:

1位      |   11位  充当 指数位                   | 52位

6.2.4 浮点数的比较

保证精度一致、类型一致

浮点型常量默认被认做double类型。

0.9f   ---- 表示指定为float类型

注:整型常量默认识别为 int 类型

eg:

#include<stdio.h>

int main(void)
{
    float f = 0.9;
    if(f == 0.9)
        printf("yes\n");
    else
        printf("no\n");

    return 0;
}

运行结果:

7.字符型

'a'   ----编码(ASCII码)----0101010-----计算机中保存的实际上是这个符号对应的ASCII的编码值

7.1 常用的ASCII码

0~32 控制字符(不可见字符) 
48~57 数字字符 '0' ~ '9'
65~90 英文的26个大写 字母的符号 
97~122 英文的26个小写 字母的符号 

7.2 字符型变量

char ch;   ----  占一个字节

语法:

char ch = 'a';

char 也是一种整型类型,char和整型之间是通用的。


7.3 应用

英文字母大小写的转换(+- 32)

数值和字符间的转换

eg:请编译程序将“China ”译成密码,用原来字母后面的第4个字母代替原来的字母。

#include<stdio.h>

int main(void)
{
    char c1 = 'C';
    char c2 = 'h';
    char c3 = 'i';
    char c4 = 'n';
    char c5 = 'a';
    printf("%c%c%c%c%c\n",c1+4,c2+4,c3+4,c4+4,c5+4);


    return 0;
}

运行结果:

  • 19
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值