zoukankan      html  css  js  c++  java
  • C语言笔记(二):数据类型(基本数据类型)、类型转换(自动转换、强制转换)

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

    数据类型

    可以加QQ群里一起学习c语言984775301
    数据类型就是用来声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储在内存中占用的空间。

    数据类型分为
    基本数据类型/算数类型:数值类型(整数类型,浮点型),字符型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 
    ", 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
    ",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, sum);
      return 0;
    
    }
    
    
  • 相关阅读:
    mysql auto_increment自增初始值与步长
    mysql配置的一些问题以及命令的说明
    数据分析-数据透视表
    线程进程
    tkinter学习-- 九、三种事件绑定方式总结
    tkinter学习-- 八、事件event
    tkinter学习-- 六、Radiobutton(单选按钮)与checkbutton(复选按钮)
    tkinter学习-- 四、控件Text
    在spring Boot中使用swagger-bootstrap-ui
    js 数据比较
  • 原文地址:https://www.cnblogs.com/yuxiangqiezi/p/12913769.html
Copyright © 2011-2022 走看看