C语言第一课 数据类型 整型和浮点型

数据类型:分为整形 , 浮点型



整形: short int long longlong 

整型有无符号(unsigned)和有符号(signed)两种类型,在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号整型和有符号整型的区别就是无符号类型可以存放的正数范围比有符号整型中的范围大一倍,因为有符号类型将最高位储存符号,而无符号类型全都储存数字。比如16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。在一些不可能取值为负数的时候,可以定义为unsigned,在一些底层的嵌入式编程的数据一般都是无符号的。


short : 默认是有符号的  -32768~~32767    无符号的 0~65535   内存字节是2    

int :   默认是有符号的 -2147483648~2147483647  无符号的 0~4294967295 内存字节为4

long: 默认是有符号的  -2147483648~2147483647 无符号为 0~4294967295 内存字节为4

longlong:默认有符号的 -2^63~2^63-1 无符号为0~2^64-1 内存字节为8 (vc6.0不支持longlong类型)



这些整型都是用%d输出


通常情况下 默认 longlong的字节数大于等于long的字节数大于等于int的字节数大于等于short的字节数

可以使用 sizeof()函数来看字节数的大小 :  例如  int i = 3; printf("%d\n",sizeof(i));





浮点型:float double longdouble

float是默认打印6位数    输出的时候用%f

double                                输出的时候用%lf

科学记数法 输出的时候用%e


float 内存为4字节  表示0的时候 要用0.0

double内存为8字节

精度表:


通常情况下 默认 longlong的字节数大于等于long的字节数大于等于int的字节数大于等于short的字节数

可以使用 sizeof()函数来看字节数的大小 :  例如  int i = 3; printf("%d\n",sizeof(i));


单精度浮点数(float)与双精度浮点数(double)的区别如下:

(1)在内存中占有的字节数不同

  • 单精度浮点数在机内占4个字节

  • 双精度浮点数在机内占8个字节

(2)有效数字位数不同

  • 单精度浮点数有效数字8位

  • 双精度浮点数有效数字16位

(3)所能表示数的范围不同

  • 单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38

  • 双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308

(4)在程序中处理速度不同一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快

通常情况下 默认 longdouble的字节数大于等于double的字节数大于float的字节数

可以使用 sizeof()函数来看字节数的大小 :  例如  double i = 3.0; printf("%lf\n",sizeof(i));


注意:1. 默认情况下 浮点数都是 double类型  所以  在定义 浮点数的时候 需要在 后面加上f   例如 float l = 12.4F    

2.输出的时候 如果是 printf(%数字1.数字2 f) 代表了 全部的长度为数字1 小数点后面的长度为数字2 必须是有效范围内进行四舍五入, 只有数字一的长度包括了数字2的长度才会有作用 否则无效当数字1是负数的时候,是右对齐,当数字1是正数的时候,是左对齐。

3.scanf 输入浮点型的时候 必须一一对应 float对应 %f double对应%lf longdouble 对应 %lf


&: 取地址符  int a ; printf("%p\n",&a); 会打印出a所在的地址,

改变一个有初始值的数的值   int a = 10; printf("前%d\n",a); scanf("%d",&a); printf("%d\n",a);

   注意: 1 scanf 必须是取要改变数值a的地址,而不是定义的这个a.

 2 scanf 输入的时候 必须和前面定义的这个数据的类型相同  例如 前面是 int 那么 scanf里面必须是%d  如果前面是String 那么scanf必须是%s

3  scanf 输入的时候 可以连续输入多个值 例如 int a =1,b=10; printf("前:%d,%d\n",a,b); scanf("%d%d",&a,&b); printf("后:%d,%d\n",a,b); 连续输入多个的时候要默认 用空格分开,要连着写两个转运符,print打印的时候需要写两个转运符中间用逗号分开。

4 scanf 输入的分隔符 可以自定义分割符 scanf("%d    中间的分隔符 可以是逗号 字母 %d   ",&a,&b);  用哪一种分隔符号分开 在输入的时候就必须对应哪一种符号。不 然会出现问题。

5 scanf 输入的时候不能加入\n这个换行符,不然会出现问题。导致无法输入。



通常情况下 默认 longlong的字节数大于等于long的字节数大于等于int的字节数大于等于short的字节数

可以使用 sizeof()函数来看字节数的大小 :  例如  int i = 3; printf("%d\n",sizeof(i));

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值