目录

  • 1 第一章  C语言概述
    • 1.1 第一节  C语言的产生和发展
    • 1.2 第二节  C语言的特点
    • 1.3 第三节  两个简单的C程序
    • 1.4 第四节  C程序的上机步骤
    • 1.5 第五节  Dev-C++介绍
    • 1.6 第六节  VC2010学习版介绍
    • 1.7 第七节  宏定义和文件包含
    • 1.8 本章小结
    • 1.9 本章单元测试
  • 2 第二章  基本数据类型与简单程序设计
    • 2.1 第一节  C语言的基本数据类型
    • 2.2 第二节  常量
    • 2.3 第三节  变量
    • 2.4 第四节  赋值语句
    • 2.5 第五节  数据输出
    • 2.6 第六节 数据输入
    • 2.7 第七节  运算符
    • 2.8 第八节  常用的数学函数
    • 2.9 第九节  顺序结构程序设计
    • 2.10 本章小结
    • 2.11 本章单元测试
  • 3 第三章  分支结构程序设计
    • 3.1 第一节  关系表达式和逻辑表达式
    • 3.2 第二节  if单分支语句
    • 3.3 第四节  if双分支语句
    • 3.4 第五节  if多分支语句
    • 3.5 第六节  case多分支语句
    • 3.6 第七节  分支结构程序设计实例
    • 3.7 本章小结
    • 3.8 本章单元测试
    • 3.9 书中本章习题答案
  • 4 第四章  循环结构程序设计
    • 4.1 第一节  为什么需要循环控制
    • 4.2 第一节  while循环
    • 4.3 第二节  do ... while循环
    • 4.4 第三节  for循环
    • 4.5 第四节  多重循环
    • 4.6 第五节  break语句和continue语句
    • 4.7 第六节  循环结构程序设计实例
    • 4.8 本章小结
    • 4.9 书中本章习题答案
  • 5 第五章 数组
    • 5.1 第一节  一维数组的定义和使用
    • 5.2 第二节  二维数组的定义和使用
    • 5.3 第三节  字符数组的定义和使用
    • 5.4 第四节  数组的应用举例
  • 6 第六章  函数
    • 6.1 第一节  函数的定义
    • 6.2 第二节  函数的调用
    • 6.3 第三节 数组作为函数参数
    • 6.4 第四节  变量的作用域
    • 6.5 第五节 变量的存储类别
    • 6.6 第六节 函数应用实例
  • 7 第七章 结构体和共用体
    • 7.1 第一节  概述
    • 7.2 第二节  定义结构体变量的方法
    • 7.3 第三节 结构体变量的引用
    • 7.4 第四节 结构体数组
    • 7.5 第五节 共用体
    • 7.6 第六节  结构体和共用体应用实例
  • 8 第八章 指针
    • 8.1 第一节  指针的概念
    • 8.2 第二节  指向简单变量的指针
    • 8.3 第三节 指向数组的指针变量
    • 8.4 第四节  指向字符串的指针变量
    • 8.5 第五节 指针作为函数参数
    • 8.6 第六节  指向结构体的指针变量
    • 8.7 第七节 指针应用实例
  • 9 第九章  文件
    • 9.1 第一节  文件概述
    • 9.2 第二节  文件的打开和关闭
    • 9.3 第三节 文件的读/写函数
    • 9.4 第四节  文件定位函数
    • 9.5 第五节  文件应用实例
  • 10 附录
    • 10.1 附录A  基本字符ASCII码表(0~127)
    • 10.2 附录B  运算符优先级表
    • 10.3 附录C 常用C库函数表
    • 10.4 附录D  编译常见错误提示
    • 10.5 附录E  常见C语言英语单词
    • 10.6 附录F  如何从十进制转换为二进制
    • 10.7 附录G  如何把二进制数转化为十进制数
    • 10.8 附录H  什么是编译器
    • 10.9 附录I  与编译器相关的几个知识点
第四节  赋值语句
  • 1 文字讲解
  • 2 视频教程
  • 3 过关测试
  • 4 课堂小结

2.3  赋值语句

      赋值语句是程序中最经常出现的语句,它的作用是对一个变量进行赋值。赋值就是将一个数据存入一段连续的具有若干个存储单元的存储空间中,该存储空间有一个名字,就是前面介绍的变量名。程序中通过变量名使用这些存储空间,既可以通过变量名将某个数据存入,又可以通过变量名将已存入的数据读出。对一个变量进行定义后,这个变量如果没有赋值,那么它的值是不确定的,所以对变量进行操作之前,应该对该变量进行赋值。

一、赋值语句的格式与功能

1、赋值语句的定义:    

     赋值语句是由赋值表达式和一个语句结束符(即分号“;”)组成的。

2、赋值语句的一般形式

      变量 = 表达式 ;

     说明:这种语句实际上就是在赋值表达式后面加上一个“=”。

               (1)会发生类型转换  (2)右结合  

               (3)优先级倒数第二

3、赋值语句的功能(先计算后赋值

       它的功能是首先计算赋值号“=”右边表达式的值,然后将结果送给赋值号“=”左边的变量。

4、赋值语句的用法

      例1  g=9.8;

      说明:给变量直接赋值。g为变量名,“=”为赋值号。该语句表示将数据 9.8 赋给变量g。

      例2    g=10+20-9;

      说明:右边为表达式。执行该语句时,先计算右边表达式”10+20-9”的值,结果为21,再将21存入变量g中。

     例3    int  x=1;      x = x+1;

     说明:累加语句。上面有两条句,第一条定义一个变量x,并初始为1;第二条语句,则将x的值1取出,将1和1相加,再将结果2存入x中,即变量g的当前值为2。这与数学上的 表达式“x = x+1”不一样,需要加强理解。执行过程如下图所示:

          

     对于初学者,需要注意的是,“=”不是等号,而是赋值号。赋值语句与算术中的等式是完全不同的。

注意:

     虽然赋值号“=”是一个运算符,但由于它的操作是将右边表达式的值赋给左边的变量, 因此,要求赋值号“=”的左边一定一个变量而不能是常量或表达式。例如

        A=a+1;

       3=x/2

       a+b=12

都是错误的。

例2-3  定义两个字符型变量。

       char c1, c2;

       c1='a';

       c2='b';

     这个例子定义了两个字符型变量c1、c2,一个字符型变量可存放一个字符将一个字符量存放到一个字符变量中,实际上并不是把该字符常量本身放到内存中,而是将该字符相应ASCI码存放到内存单元中。C语言中的字符型数据与整型数据之间可以通用。因为字符型数据与整型数据的存储结构一样。

例2-4   给变量赋值。

  1.  #include   <stdio.h>

  2.  main()

  3.  {     char c1='a', c2;

  4.        int k;

  5.        k=c1;   //将字符型变量c1的ascii码赋给整型变量k

  6.       c2=97;  //将整数97赋给字符型变量c2

  7.      printf("%c, %c, %d\n", c1, c2, c1);

  8.       //字符变量既可按字符型输出,也可按整型输出

  9.      printf("%d, %c\n", k, k);

  10.       //整型变量既可按整型输出,也可按字符型输出

  11. }

 运行结果如图2-2所示。

 

                图2-2  例2-4运行结果

 上面的程序中,变量说明:

        char c1='a', c2;

 等价于

        char c1, c2 ;

 即在定义变量的同时,可以给变量赋初值。

例2-5    将小写字母转换成大写字母。

源程序1:定义两个变量

  1. #include <stdio.h>

  2. main()

  3. {     char c1, c2;

  4.      c1='a';

  5.      c2=c1-32;      //c2='A'

  6.      printf("%c,%c",c1,c2);

  7. }

运行结果如下图所示:

       

源程序2:定义一个变量

  1. #include <stdio.h>

  2. main()

  3. {     char ch;

  4.      ch='a';

  5.      printf("%c=>", ch);

  6.      ch=ch-32;      // 这种用法更多一些

  7.      printf("%c",ch);

  8. }

运行结果如下:

       

知识点:

1、将大写字母转换为小写字母:ch = ch +32;

2、将写字母转换为写字母:ch = ch -32;

3、字母移位变换:

     如:'b'-->'e'   相应语句  ch = ch +3;

     'f' -->'b'    相应语句  ch = ch -4;

4、将数字字符转换对应的数值:

     如:'1'-->1   相应语句  a = ch - '0';

5、将数字字符移位变换

      如:'1'-->'5'   相应语句  ch = ch -4;

注意:字符型数据做加减法运算时要有意义。

另外,由于C语言中还有一些复合赋值运算,如+=、-=、*=、 /=等,中间不能有空格,因此,下列语句:

      c+=32;       ( 相当于c=c+32; )

      c-=32;         ( 相当于c=c-32; )

      i*=a+b;       ( 相当于i=i*(a+b); )

      k/=2;           ( 相当于k=k/2; )

      均为赋值语句,它们均可以作为一个单独的语句在程序中出现。

二、复合赋值运算

格式:复合赋值运算符=运算符+赋值号


三、赋值语句中的类型转换

      当赋值语句(或赋值运算表达式)中“=”左边的变量与右边表达式的数据类型不一致时, C编译系统会自动实现数据类型的转换,转换的原则是将赋值号右边的表达式值的类型转换成与左边变量相同的类型后再赋值。例如:

       int         a;

       short     b;

       char       c;

       a=b;   //short型变量b的值转换成int型后再赋给a

       b=c;   //char型变量c的值转换成short型后再赋给b

       a=b+c;   //将b和c的值转换成int型后相加,再赋给a

       需要注意的是,对于不同类型的变量,由于其数据的长度不同,当左边变量的数据类型比右边表达式值的类型长(比如int型转换成float型或 float型转换成 double型)时,转换后的值不会改变精度或准确度,只是改变值的表示形式。然而,当右边表达式值的类型比左边变量的类型要长时,这种转换的结果会对右边的数据进行截取,仅取出与左边变量类型相同的长度,这意味着会丢失高位数据,因此,可能引起精度降低或出现错误的结果。

      总结:1、范围小->范围大,只改变存储结构

               2、范围->范围,不但改变存储结构,精度可能降低或出现错误

      看下面使用赋值语句编写的简单程序示例。

例2-6  使用赋值语句编写程序。

  1. #include  <stdio.h>

  2. #include  <conio.h>

  3. main()

  4. {

  5.         double  x;   int a =350;   char c;

  6.         c=a;    //  int -> char   数据可能有错误

  7.         x=a;      //  int -> double   数据没有错误

  8.        printf("a=%d,c=%d,x=%f\n   ", a, c, x);

  9.         getch( );

  10. }

程序的运行结果如图2-3所示。

       

           图2-3  例2-6运行结果

程序分析:

      语句“c=a;   ”执行如下图所示:


      因为字符型在内存中仅占一个字节,所以执行“c=a”后,char型变量c只取int型变量a值的低8位。对于高位字节,数据则丢失。执行后,结果产生错误,c = 94。

      语句“x=a;”执行如下图所示:


       double型数据表示的范围比int型大,所以执行“x=a;“后,x的值不会比a小。数据的存储结构发生了变化,但数据的精度可能会发生变化。在编写程序时需要引起注意。

     程序中 printf( )是格式化输出标准函数,它可将a、c、x的值按指定的格式显示在屏幕上, getch( )也是标准函数,等待用户输入任意一个字符。              

      一般来说,一个完整的计算机程序经常要求具备输入和输出功能。C语言本身没有配备完成输入/输出功能的语句,它的输入/输出功能是通过在程序中调用系统提供的标准函数来实现的。下面介绍几种常用的输入/输出(I/O)标准函数。


三、怎样编写源程序

1、写一个空程序

     

2、加头文件


3、定义变量


4、输入语句或初始化

5、算法


6、输出相关信息