设为首页 加入收藏

TOP

变量 + 数据类型(一)
2023-07-23 13:29:02 】 浏览:51
Tags:变量

变量:

  • 什么是变量?一个可以存储数据(存储的地方在内存中),并可以在代码的运行中,给与数据的改变
  • 注意:变量的声明必须在最前面
  • 语法:数据类型 变量名称 = 值;
  • 案例:
  • %d - 输出一个整数   %.2f - 输出一个小数(2代表的是小数位,可以改变)
  • %c - 输出一个字符   %s - 输出一个字符串
  • //引入头文件
    #include <stdio.h>
    void main(){
        int num = 1;  //给num变量赋值1
        double score = 2.3;
        char gendr = 'A';
        char name[] = "我是字符串";  
        //注意:改被值的内容,要放到所有变量声明的后面
         //因为c语言的变量声明必须在最前面,num = 2已经不是变量声明
        num = 2; //改变a变量值
    
        printf("num=%d score=%.2f gendr=%c name=%s",num,score,gendr,name);
    
        getchar();//让窗口停留(cmd窗口)
    
    }
  • 内存分析:

    • 不同的变量,改成(不同的数据)  - 画图时搞错  
  • 细节:

    • 变量表示内存中的一个存储区域,(不同的数据类型,占空间也不一样)
    • 变量必先声明,后使用
    • 变量名,在同一个作用域不能重名
    • 同一类型,并同一区域的变量,可以不断变化(不遵守,可能导致数据丢失)  

 数据类型:

  • 什么是数据类型?用来表示一个数据是什么类型,并在内存中分配对应的类型空间大小,不同的类型分配的内存大小也不一样
  • 有哪些数据类型? - 记下来 
    • 注意:在C语言中没有字符串类型,用字符数组表示字符串
    • 在不同的系统上,部分的数据类型长度不一样,如int可能是2或4      
  • 整数类型:

    • 整数类型的作用? 用来存放整数,负整数和正整数都可以,但不同的整数可以存放的值范围也不同
      • 如:int 在系统上是2个字节值范围就是:-32768到32767 (如果超过该值,就会出现越界的问题,导致数据混乱)
      • 如:int在系统上是4个字节值范围就是:-214483648到2147483647
    • 为什么会同样是int分2个字节和4个字节?
      • 因为跟操作系统、系统位数、编译器有关   
    • C语言的数据类分有符号和无符号?
      • 有符号 sigend int  - 等价于int - C语言默认是带符号 - 其它数据类型也分有无符号,不止是int类型有
      • 无符号  unsigned int - 值范围 - 0到65636 - 占2个字节
      • 区别:
        • 值范围不同,主要原因底层二进制分析不同       
    • 案例: 
    • #include <stdio.h>
      void main(){    int i = 2147483647;
          signed int j = 2147483648; //越界
          unsigned int q = 999999655351; //越界
          printf("int的字节数=%d\n",sizeof(int));
          printf("i=%d j=%d q=%d",i,j,q);
      
          getchar();//让窗口停留(cmd窗口)
      
      }
    • 整数类型细节:
      • C程序中整数说明一般用int型,不够在使用long或者long long
        • long的输出是 %ld 
        • long long的输出是 %lld
      • bit(位):计算机中最小的存储单位
      • byte(字节):计算机中基本的存储单位
      • 1byte=8bit
  • 浮点类型:

    • 浮点数的作用?用来表示一个小数,如:123.1,99.9等
    • 浮点数又分两个精度?
      • float-单精度:存储大小(4给字节),值范围1.2E-38到3.4E+38,精度是6位小数(是点后面的数)
      • double-双精度:存储大小(8个字节),值范围2.3E-308到1.7+308,精度是15位小数(是点后面的数)
    • 浮点类型细节:
      • 浮点型常量默认为double型,声明float型常量时,必须加‘F’或'f'
        • float i = 1.1; - 就算这样声明其实也double型,必须是 float i = 1.1f;才是float型
        • 不然会有这么一句话:“初始化”: 从“double”到“float”截断
      • 浮点型有两种表达形式:    
        • 十进制:如:5.12、5.20 
        • 科学计数法:如:5.12e2 、5.12E-2  
      • 通常情况下用double型,因为精度比float高
        • double可以输出15位小数,float6位,如果超过小数会数据混乱  
      • 输出浮点型时默认小数保存6位
    • //引入头文件
      #include <stdio.h>
      void main(){
          float a = 10.1; //“初始化”: 从“double”到“float”截断
          float a2 = 10.2f;
          double b = 10.2;
          double b2 = .521;//等价于0.521
      
          double c = 5.21e2;//等价5.12*(10^2) = 521
          double c2 = 5.21e-2;//等价5.12*(10^-2)= 5.12/100= 0.0521
      
          printf("b=%.15f b2=%f",b,b2);//输出默认保存6位小数,.15是15位小数
      
          getchar();
      }
  • 布尔类型:

    • 布尔类型作用? 代表真(true)和假(false),一般使用场景条件控制(if),循环控制(while)
    • C语言(C89)没有定义布尔型,通过0代表假,非0代表真的(负整数也算)
      • 因为是数字表示,非常的不直观,可以通过宏定义来完成真假操作
    • C语言(C99)提供了_Bool型,_Bool型仍是整数型,接收0和非0,不是非0的数都会被存储为1
    • //引入头文件
      #include <stdio.h>
      //使用宏定义来完成
      #define BOOL int //定义BOOL为整型
      #define TURE 1 //TURE等价于1
      #define FALSE 0 //FALSE等价于0
      void main(){
      
          int i = 0; //0假,1真,-1真
          BOOL isOK = TURE;  //TURE等价于1
          BOOL OKis = FALSE; //FALSE等价于0
          if(OKis){
              printf("i为true就输出改语句");
          }
          getchar();
      }
  • 自动类型的转换:

    • 什么是自动类型转换?在C语言程序中进行赋值或运算时,精度小的类型自动转换为精度大的数据类型

    • 细节:
      • 多个数据类型进行数据转换时,系统首先自动将所有数据转换为精度最大的数据类型(int和double进行运算,就转成double)

      • 精度大的值赋值给比它小的值会造成精度丢失(如:double给float赋值)

      • 两类型的字节数不同,转换成字节数大的类型,若两个类型的字节数相同,且一种由符号,一种无符号,则转换成无符号类型   

  • 强制转换:

    • 什么是强制转换?把精度高的数据转换为精度小的数据类型 
    • 语法:数据类型 名称 = (数据类型) 变量或数据
    • 细节:
      • 高精度转低精度会照成数据流失
      • 强转只对只近的的数有效,如果是对多个数据可以用()括号括起来
      • 强转不是四舍五入,直接获取小数点前面的数
    • //引入
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++11实践注意事项 下一篇C语言常见的八大排序

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目