C语言:数据类型(基本数据类型)、类型转换(自动转换、强制转换)

欢迎关注我的公众号“老余笔记”,也可以访问我的个人博客www.yuxiaoshao.cn
有需要的可以qq交流学习1316677086 或者加入我的群里交流:901648700 一起分享资源,交流学习

数据类型

数据类型就是用来声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储在内存中占用的空间。

数据类型分为
基本数据类型/算数类型:数值类型(整数类型,浮点型),字符型char
构造数据类型:数组、结构体、共用体、枚举
指针类型
void类型(空类型)void

在这里插入图片描述

基本数据类型

我们常用的数字有整数和小数。所以基本数据类型类型又分为了整数类型即整型(当然这里的整型不是韩国的整形)和浮点类型即浮点型;

注意,各种类型的存储大小与系统位数有关,但目前通用的以64位系统为主。

整型

数据类型 占用大小
short 短整型 2 字节 取值范围:-32,768 到 32,767
int 整型 【常用】 2或4个字节(一般都占用2个字节) 取值范围:-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647
long 长整型 4 字节 取值范围:-2,147,483,648 到 2,147,483,647

其实char也是int类型,在计算机中,字符也是通过对照ACILL表的int数值转换的。
想知道ACILL表是啥自己百度

字符型

数据类型 占用大小
char 字符型【常用】 1字节 取值范围:(-128 到 127 或 0 到 255)

因为-128 到 127 或 0 到 255也在int【-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 】的取值范围之内,所以在小于127大于-128的范围里的时候 int可以和char类型相互转换对应的字符

浮点类型

数据类型 占用大小
float 单精度浮点 【常用】 4 字节 取值范围(1.2E-38 到 3.4E+38 )6 位小数
double 双精度浮点 【常用】 8 字节 取值范围 (2.3E-308 到 1.7E+308 )15 位小数
long double 16 字节 取值范围(3.4E-4932 到 1.1E+4932 )19 位小数

计算某个变量在特定平台上的准确大小

使用sizefof运算符

#include <stdio.h>
  #include <limits.h>
   
  int main()
  {
  //表达式 sizeof(type) 得到对象或类型的存储字节大小。
     printf("int 存储大小 : %lu \n", sizeof(int));
     //%lu 为 32 位无符号整数
     
     return 0;
  }
  

类型转换

自动类型转换

C 语言中如果一个表达式中含有不同类型的常量和变量,在计算时,会将它们自动转换为同一种类型;

int i = 5.5;
/*这里的5.5默认是double类型,
通过C的自动转换机制,会摄取掉小数部分,只保留整数部分*/

自动转换规则:
浮点数赋给整型,该浮点数小数被舍去; 例:int a = 1.2; //这里的.2会被舍去 只会保留整数部分
整数赋给浮点型,数值不变,但是被存储到相应的浮点型变量中; 例 float b = 5; //这里的 5 会被转换成5.0 作为浮点型存储在内存里

强制类型转换

使用(),在括号里填写需要转换的类型
使用基本数据类型的时候注意,从大范围强制转换为小范围会存在内存溢出的现象

#include <stdio.h>
int main () {
float f,x=3.6,y=5.2;
    int i=4,a,b;
    a=x+y;
    b=(int)(x+y);//(x+y)是浮点型 这里会强制转换为int型
    f=10/i;
    printf("a=%d,b=%d,f=%f,x=%f\n",a,b,f,x);

return 0 ;
}

C中的“布尔类型”

在C语言里,是没有bool类型的,所以 C 语言判断真假时以 0 为假,非 0 为真(一般用1)

C99 提供了 _Bool 型,所以布尔类型可以声明为 _Bool flag。
_Bool 依然仍是整数类型,但与一般整型不同的是,_Bool 变量只能赋值为 0 或 1,非 0 的值都会被存储为 1。
C99还提供了一个头文件 <stdbool.h> 定义了 bool 代表 _Bool,true 代表 1,false 代表 0。
只要导入 stdbool.h ,就能非常方便的操作布尔类型了

#include <stdio.h>
 //导入 stdbool.h 来使用布尔类型
 #include <stdbool.h>
 //计算n!,n的值在main中定义
int main ()
{ 
  int n = 10;    //计算叠乘数
  int sum = 1; //用来存放叠乘的结果
  bool flag = false;    //叠乘标记
  
  int num = n;    //循环次数
  while( !flag )
  {
   sum = sum * (num--);
   //当num=1时结束循环
   if( num == 1)
   {
    flag = true;
   }
  }
  printf ("%d的叠乘值为 %d \n", n, sum);
  return 0;

}

猜你喜欢

转载自www.cnblogs.com/yuxiangqiezi/p/12913769.html