02-基本数据类型-c语言初学系列

第二章 基本数据类型

什么是数据类型?

  • 著名计算机科学家Nikiklaus Wirth提出一个公式
  • 数据结构 + 算法 = 程序
  • 实际上结构化的程序设计可以表示为:
  • 程序= 算法+数据结构+程序设计方法+语言工具和环境
  • C的数据结构就是以数据类型的形式出现的

知识要点

  • 目录

    第二章 基本数据类型

    2.2 数值数据的表示

    2.3 文字数据的表示

    2.4 变量的定义和赋值

    2.5 C语言类型修饰符

    2.6 表达式中数据类型转换

    2.7 计算机中数据的表示


2.1 C语言的数据类型

  • C语言提供的数据类型分类如下:

02-基本数据类型-c语言初学系列_第1张图片

2.2 数值数据的表示

  • C语言中使用的数值数据有两种:整数和浮点小数。
  • 整数
  • 表示形式:
  • 十进制:123 456
  • 八进制:011 072
  • 十六进制:0x11-0x32
  • 一般整数的存储空间为2个字节,取值范围一般为
  • -215~215-1,即-32768~32767。
  • 如果超过这个范围,只有使用占4个字节的长整型数
  • ,即在整数后面加上一个字母L(大小写均可),此时取值范围可以扩大到-231~231-1,即-2147483648~2147483647。
  • C语言中使用的数值数据有两种:整数和浮点小数。
  • 浮点小数
  • C语言中的浮点小数描述的是实数,可以采用十进制小数形式或者指数形式表示。
  • 十进制小数形式:包含整数部分、小数点和小数部分。如1.32 34.0 注意:其中小数点不能省略,34与34.0不是一样的。
  • 指数形式:包含尾数部分、字母E或e和阶码。例如 2.78E12。注意:尾数部分不能省、阶码必须是整数。
  • 浮点小数一般为单精度浮点
  • 类型,占用4个字节,有效位数6~7位,如果需要精度特别高,可以采用双精度浮点
    • 类型,有效位数可以达到16~17位。

    2.3 文字数据的表示

    • C语言把文字数据分为两种类型:单个字符和字符串。
    • 单个字符
    • 单个字符的表现形式是由单引号括起来的一个字符,例如:’a’ ‘A’ ‘+’ ‘5’ ‘$’。
    • 其中单引号、双引号和反斜杠的表现形式比较特殊,分别是’\’’、’\”’、’\\’。在C语言中转义字符
  • 被认为是具有特殊意义的单个字符,例如’\n’,代表一个换行符。
  • 单个字符在内存中只占用1个字节,其存储的内容为该字符在ASCII码表中对应的数值。
  • C语言把文字数据分为两种类型:单个字符
  • 和字符串。
  • 字符串
  • 字符串是由双引号括起来的字符序列,例如:”this is a program.” ”I love C” 。
  • 字符串中的字符按照从左到右的顺序,依次存储在一段连续的空间里,其中每一个字符占用一个字节,其内容为该字符在ASCII码表
  • 中对应的数值。
  • 注意:C语言的字符串在实际存储时,将自动在字符串尾部加了一个结束标志‘\0’(其ASCII码值为0)。
  • 思考:‘a’ “a” 是相同的吗?

2.4 变量的定义和赋值

  • C语言中的数据有两种基本形式:常量和变量。
  • 常量的值是固定的,变量是可以改变的
  • 变量的定义
  • 类型标识符 变量名
  • 变量在定义时要注意以下几个问题:
  • 变量的命名要符合C语言规定的标识符的命名规则,即只能由字母、数字和下划线组成,首字母必须为字母或下划线。此外C语言中规定的有特殊用途的关键字,例如int、float、if等,不能作为变量名称。
  • a b2 stu1 x1_1 sum _name1 正确
  • 2ac stu-1 len#1 else int float 不正确
  • C语言中大小写是敏感的。但是习惯上,C中的变量一般用小写字母表示。

变量的定义

  • 变量的数据类型决定了它的存储类型,即该变量占用的存储空间。所以定义变量类型,就是为了给该变量分配存储空间,以便存放数据。基本的变量类型及其存储空间见表

02-基本数据类型-c语言初学系列_第2张图片

变量的赋值

  • 变量需要预置一个值,即赋值。赋值操作通过
  • 赋值符号“=”把右边的值赋给左边的变量:
  • 变量名 = 表达式;
  • 例如 x=3; a=a+1; f=3*4+2;
  • 注意数学中的“=”符号不同于C语言中的赋值符号“=”。
  • 其中需要注意的是:
  • 如果赋值时两侧类型不一致时,系统将会作如下处理:
    将实数赋给一个整型变量时,系统自动舍弃小数部分。
    将整数赋给一个浮点型变量时,系统将保持数值不变并且以浮点小数形式存储到变量中。
    当字符型数据
  • 赋给一个整型变量时,不同的系统实现的情况不同,一般当该字符的ASCII值小于127时,系统将整型变量的高字节置0、低字节存放该字符的ASCII值。
    变量在定义的同时也可以赋初值,称作变量的初始化。
  • 字符型变量
  • 的值可以是字符型数据、介于-128~127的整数或者转义字符。
/*--------------------------------------------
    程序L2_1.C功能:赋值时类型自动的转换示例。
---------------------------------------------*/
 #include            
 main()                   
 {
  int a,x;
  float f;
  a=3.9;
  f=12;
  x='A';
  printf("a=%d,f=%f,x=%d\n",a,f,x);
}
运行结果:a=3,f=12.000000,x=65

/*---------------------------------------------------------------------
程序L2_2.C功能:将字符'A' 赋值给字符变量的四种方法。
   ------------------------------------------------------------------*/
  #include            
  main()                   
  {
   char c1,c2,c3,c4;
   c1='A';
   c2=65;
   c3='\101';
   c4='\x41';   printf("c1=%c,c2=%c,c3=%c,c4=%c\n",c1,c2,c3,c4);   printf("c1=%d,c2=%d,c3=%d,c4=%d\n",c1,c2,c3,c4);       
   }
思考:c1,c2,c3,c4加上32输出结果是什么?
          加上256呢?

2.5 C语言类型修饰符

  • 基本类型可以带修饰性前缀,即类型修饰符,扩大C语言基本数据类型的使用范围。C语言共有4种类型修饰符:
  • long 长型 short 短型
  • signed 有符号型 unsigned 无符号型
  • long int
  • (简写为long)型的存储长度为4个字节,用于存储整数超过int型取值范围的情况。long double 型存储长度16个字节,约24位有效数字,取值范围超过double型。
  • 有符号型signed和无符号型unsigned
  • 适用于char型、int型和long型三种类型,区别在于它们的最高位是否作为符号位。unsigned char型取值范围0~255,unsigned int(简写为unsigned)型取值范围0~65535,unsigned long型取值范围0~232-1。
/*---------------------------------------------------------------
  程序L2_3.C功能:类型修饰符long和 unsigned的使用。
  --------------------------------------------------------------*/
 #include            
 main()                   
 {
  char  a1,b1;
  unsigned char  a2,b2;
  int  x1,y1;
  long  x2,y2;
  a1=127;   b1=129;
  a2=127;   b2=129;
  x1=32767;   y1=32769;
  x2=32767;   y2=32769;
  printf("a1=%d, a2=%u, b1=%d, b2=%u\n",a1,a2,b1,b2);
  printf("x1=%d, x2=%ld, y1=%d, y2=%ld\n",x1,x2,y1,y2);       
  }

2.6 表达式中数据类型转换

  • 自动类型转换
  • C语言规定,不同类型的数据在参加运算前会自动转换成相同类型,再进行运算。转换的规则是:
  • 如果运算的数据有float型或double型,自动转换成double型再运算,结果为double型。如果运算的数据中无float型或double型,但是有long型,数据自动转换成long 型再运算,结果为long型。其余情况为int型。

02-基本数据类型-c语言初学系列_第3张图片

/*------------------------------------------------
   程序L2_4.C功能:自动类型转换示例。
  ------------------------------------------------*/
 #include 
 main()
 {
  float x,y;
  long m,n;
  x=3/2+8/3;
  y=3.0/2+8/3.0;
  m=1*2*3*4*5*6*7*8*9;
  n=1L*2*3*4*5*6*7*8*9;
  printf("x=%f, y=%f,m=%ld,n=%ld \n",x,y,m,n);
  }
结果:X=3.000000,y=4.166667,m=-30336,n=362880

  • 强制类型转换
  • 在C语言中也可以使用强制类型转换符,强迫表达式的值转换为某一特定类型。强制类型转换形式为:
  • (类型) 表达式
  • 强制类型转换最主要的的用途一是满足一些运算对类型的特殊要求,例如求余运算符“%”,要求运算符两侧的数据为整型,(int)2.5%3二是防止丢失整数除法中的小数部分。

2.7 计算机中数据的表示

  • 计算机最主要的功能是处理数据,如数值、文字、图形、图像等。而这些数据必须被转换为相应的数字编码,才能进行存储和处理。
  • 二进制、八进制、十六进制
  • 进制之间的转换
  • 二进制数在内存中的表示
  • 字符编码

IEEE浮点数表示法

  • 目前已知的所有的C/C++编译器都是按照IEEE(国际电子电器工程师协会)制定的IEEE浮点数表示法来进行计算的。这种结构是一种科学表示法,用符号(正或负)、指数和尾数来表示,底数被确定为2,也就是说把一个浮点数表示为尾数乘以2的指数次方再加上符号。
  • float
  • 共计42位,折合4字节
  • 由最高到最低位分别为31、30、29、……、0位
  • 31位是符号位,1表示该数为负,0反之。
  • 30-23位,一共8位是指数位。
  • 22-0位,一共23位是尾数位。

123456.0f

  • 直接将整数部转化为二进制表示:
  • 11110001001000000
  • 然后将小数点向左移,一直移到离最高位只有1位,就是最高位的1:1.11100010010000000一共移动了16位
  • 小数点每向左移一位就等于在以2为底的科学计算法表示中指数+1,所以原数就等于:
  • 1.11100010010000000*(2^16)
  • 指数部分,一共8位,统一把十进制的整数化为二进制时,都先加上127,在这里,我们的
  • 16加上127后就变成了143,二进制表示为:
  • 10001111
  • 12345.6f这个数是正的,所以符号位是0
  • 我们按照前面讲得格式把它拼起来:
  • 0 10001111 11100010010000000000000
/*--------------------------------------------------------------------
             程序L2_5.C : 十进制、八进制、十六进制数据及其输出
 ------------------------------------------------------------------------*/
#include 
 main( )
 {
  int a,b,c,m,n;
  a=11;
  b=011;
  c=0x11;
  m=65;
  n=97;
  printf("十进制11等于%d, 八进制11等于%d, 十六进制11等于%d,\n",a,b,c);
  printf("十进制  八进制  十六进制  字符\n");
  printf("  65      %o       %x      %c,\n",m,m,m);
  printf("  97      %o       %x      %c,\n",n,n,n);
  }

/*-----------------------------------------------------------------------------
  程序L2_6.C : 从键盘输入一个大写字母,输出其对应的小写字母。
 -------------------------------------------------------------------------------*/
 #include 
 main( )                               
 { 
  char c;
  printf("请输入大写字母\n");
  scanf("%c",&c);              
  c=c+32;         /*大写字母的ASCII码加上32为其对应的小写字母*/           
  printf("其小写字母为%c\n",c);   
  }

/*-----------------------------------------------------------------
    程序L2_7.C:已知x=3.2,y=7,z=2,计算y/3*3.2-2的值。
 -----------------------------------------------------------------*/
 #include 
 main( )                               
 { 
  float x=3.2 , s;
  int y=7,z=2;char c;
  s=y/3*3.2-2;
  printf("result is %f\n",s);   
  }

/*--------------------------------------------------------------------------
   程序L2_8.C : 编写一个程序,用于输入一个学生的姓名、学号、英语、
   数学、计算机成绩,输出学生姓名、学号和平均成绩。
   ------------------------------------------------------------------------------*/
 #include 
 main( )                               
 { 
  char name[31];    /*数组name[31]最多可以放30个字符或15个汉字*/
  long num;           /*其值超过32767的号码,需要用长整型*/
  int eng,math,comp;
  float aver;
  printf("Please input the student's name:");
  scanf("%s",name);        
  /*字符串用格式符"%s",并且数组名name前不需要取址符"&"*/
  printf("Please input the student's ID:");
  scanf("%ld",&num);       /*long型变量的格式符用%ld*/
  printf("Please input scores (English math computer):");
  scanf("%d%d%d",&eng,&math,&comp);
  aver=(eng+math+comp)/3.0;
  printf("the student's named is %s , his ID is %ld ,his average score is %.1f \n",name,num,aver);   
  }

小练习

  • 编程输出字符0、9、A、Z、a、z的ACSII码的十进制、八进制和十六进制的表示形式。
  • 参考例L2_6.C编写一个程序,从键盘输入字符(例如’1’),转换成十进制数(即1),并输出。
    提示:“1”的ASCII码为十进制数49,将其减去一个数等于十进制1即可。
  • 已知a=3,b=2,c=2.5,计算(float)(a+b)/3+(int)c的值。
  • 编写一个程序输出5!、10!的结果。
  • 参考例L2_8.C编写一个程序,输入2个学生的姓名、学号、英语、数学、计算机成绩,输出这两个学生的姓名、学号和平均分。

ps: 对应PPT模板下载地址如下,可按需下载

02-基本数据类型-自己使用的C语言教程PPT-适合老师备课或者自学-C文档类资源-CSDN下载


 


全部课程的PPT已经整理好了,需要的童鞋可以点击下载
总-自己使用的C语言教程PPT-适合老师备课或者自学-15篇PPT合集.zip-C文档类资源-CSDN下载

你可能感兴趣的:(c语言教案ppt,开发语言,c语言)