pute day2 C语言的数据类型

1.数据类型---数据的类型

解决实际问题的角度:

统计人口总数---整数

统计身高体重---小数

2.C语言中数据类型的划分

基本数据类型:

a.整型

b.浮点型

c.字符型

3.变量 常量

变量:在程序运行过程中,其值可以改变

改变的原因:变量实质是一个储存数据的内存空间

 变量名:
   1.数字,字母,下划线组成 
   2.不能以数字开头
   3.区分大小写 
   4.不能与关键词重名 
   5.不要与二级关键词重名  //include 
   6.不要与库函数重名 

常量:在程序运行过程中,值无法改变

4.定义变量-----开辟了一块空间

int a = 10 // 定义一个变量a 同时给a一个值10 --->初始化

int a;

a = 10;//赋值

字节序存放问题

小端模式:高位放在高地址处,低位放在低地址处

大端模式:高位放在低地址处,低位放在高地址处

大端模式与小端模式是由于硬件设计决定的,在进行网络交互时,默认为大端模式

   int a = 0x12345678;  //4个字节 
   
         +---------+ 大端存储 
         |  0x12    | 0x1000
         +---------+ 
         |  0x34   | 0x1001//以字节 进行编号 ---地址  --编址
         +---------+ 
         |  0x56   | 0x1002
         +---------+ 
         |  0x78   | 0x1003 
         +---------+ 
         |             | 0x1004
         +---------+ 
         |             | 0x1005
         +---------+ 
         
         
         
         +---------+  小端存储 
         |  0x78    | 0x1000
         +---------+ 
         |  0x56   | 0x1001
         +---------+ 
         |  0x34   | 0x1002
         +---------+ 
         |  0x12   | 0x1003 
         +---------+ 
         |             | 0x1004
         +---------+ 
         |             | 0x1005

5.进制

十进制转n进制:除以n取余

n进制转十进制:加权求和

一个八进制数对应三位二进制

一个十六进制数对应四位二进制

6.整型数据:
整型数据大小
int4字节
short2字节
long8字节
long long8字节

signed---有符号 unsigned---无符号

*64位平台

整型数据的取值范围
类型位数取值范围
[signed] int16-32768-32767 即 -2^15-2^15-1
Unsigned int160~65535 即 0-2^16-1
[signed] short [int]16—32768-32767 
Unsigned short[int]160-65535
long [int]32-2147483648~2147483647
unsigned long [int]320-4294967295

计算机储存数据都是二进制形式,以数据的补码形式储存,正数的原码,反码,补码是相同的。负数的补码是其反码加1。

整型数据的溢出
#include <stdio.h> 
void main() 
{ 
int a,b; 
a=32767; 
b= a+l; 
printf("%d, %d\n a, b); 
} 
运行结果为:
32767 ,-32768 

a的二进制形式为0111111111111111加1后最高位变为1其余为0,但是int型只能存储后十五位也就是十五位0,此时由于最高位为0,识别为带符号且为负号,正好就是-32768的补码,所以输出为-32768。

7.浮点型数据:
  • 浮点型常量:

1.23

1.23e 科学计数法

-1.23e-4 // -1.24 * 10^-4

浮点型变量:
float4字节
double8字节

浮点型的储存:

eg:-9.25

step1:十进制小数转化为二进制小数

整数部分:

9---1001

小数部分乘2取整:

0.25*2=0.5---0

0.5*2= 1    ---1

0.01

即1001.01

step2:将二进制的小数用科学计数法表示

1.00101*10^3

step3:按照IEEE的754标准存放 

float 32位

符号位| 指数位 | 尾数位

    1     |      8     | 23

    1     |  3+127 | 00101

    1     |1000 0010|00101 000000000000000000

     1100 0001 0001 0100 0000 0000 0000 0000--->C1140000

double 8位

    1    |    11    |    52

浮点数的比较:

eg: 0.9

  0.9 * 2 = 1.8 --- 1
  0.8 * 2 = 1.6 --- 1
  0.6 * 2 = 1.2 --- 1 
  0.2 * 2 = 0.4 --- 0
  0.4 * 2 = 0.8 --- 0
  0.8 * 2 = 1.6 --- 1
  0.6 * 2 = 1.2 --- 1

0.9按照乘2取整会陷入循环,言下之意0.9用二进制表示会出现类似十进制里面的无限循环的情况,取得位数越多就会越接近0.9,相比下来用double定义0.9比float定义会更精确更接近0.9。

  • 17
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值