首页 > 其他分享 >变量 + 数据类型

变量 + 数据类型

时间:2022-10-04 19:58:02浏览次数:49  
标签:变量 int double float 数据类型 类型

变量:

  • 什么是变量?一个可以存储数据(存储的地方在内存中),并可以在代码的运行中,给与数据的改变
  • 注意:变量的声明必须在最前面
  • 语法:数据类型 变量名称 = 值;
  • 案例:
  • %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赋值)

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

  • 强制转换:

    • 什么是强制转换?把精度高的数据转换为精度小的数据类型 
    • 语法:数据类型 名称 = (数据类型) 变量或数据
    • 细节:
      • 高精度转低精度会照成数据流失
      • 强转只对只近的的数有效,如果是对多个数据可以用()括号括起来
      • 强转不是四舍五入,直接获取小数点前面的数
    • //引入头文件
      #include <stdio.h>
      
      void main(){
          double i = 10.99;
          int M = 20;
          int k = (int)i; //强转
          int num1 = (int)3.5*10 + 6*1.5; //强制转换只对最近的有效 - 这就是对3.5发生强转
          int num2 = (int)(3.5*10 + 6*1.5); // 这对求出来的结果发生强转
          //k结果10,强转不是四舍五入,而是直接获取小数前面的部分
          printf("k=%d i=%f",k,i);//i=10.99,i仍然是double 
          getchar();
      }

       

                                                    

 

标签:变量,int,double,float,数据类型,类型
From: https://www.cnblogs.com/Mr-shne/p/16716463.html

相关文章

  • 2、solidity数据类型以及函数
    solidity数据类型分为以下几种:1、整型int(有符号整型,有正有负)uint(无符号整型,无负数)以8位为区间,支持int8,int16,int24至int256,uint同理。int默认为int256,uint......
  • C语言变量命名规则
    在定义变量时,变量名可以是字母、数字和下划线的组合。但是也不是随便的组合,要注意以下几个命名规则:1、变量名以英文字母开头;变量名的开头不能是数字,可以由字母或下划线开......
  • python中同时将列表赋值多个变量及列表list的复制方法记录
    有时如果有多个变量,初始值都是一样的列表的情况,我们常常会以如下方式定义a=b=[1,2,3,"QQ:5201351"],或者b=[1,2,3,"QQ:5201351"];a=b但是对于列表这样定义,如果不对其有......
  • 变量作用域
    说明:  例子:  形参也会被视为当前函数的一个局部变量如intf1(intn)其中的n视为f1函数的局部变量在函数外部定义的变量称之为全局变量,作用域为整个程序当形......
  • 数据类型
    publicclassDemo{publicstaticvoidmain(String[]args){inti=10;inti2=010;inti3=0x1A;//16进制0-9A-Finti4=0b0010;......
  • 如何在Beeline中使用自定义变量
    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。Fayson的github:​​https://github.com/fayson/cdhproject​​提示:代码块部分可......
  • 0458-Hive数据类型校验问题分析
    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。Fayson的github:​​https://github.com/fayson/cdhproject​​提示:代码块部分可......
  • systemverilog中的静态变量static和动态变量automatic
    本文参考:SystemVerilog静态变量和动态变量_行走的BUG永动机的博客-CSDN博客_systemverilog静态变量和动态变量systemverilog之Automatic-腾讯云开发者社区-腾讯云(ten......
  • 注释、标识符和关键字、数据类型及其拓展
    注释、标识符和关键字publicclassHelloWorld{publicstaticvoidmain(String[]args){//单行注释//输出一个Hello,World!System.ou......
  • SAS 自动变量
    当SAS在生成数据集时,会产生一些自动变量,这些变量看不见并且是临时的不会放进生成的数据集中,但是可以像调用普通变量一样正常调用。常见的自动变量有:_N_:在DATAstep......