第二章  C语言基础知识
2.1  常量和变量
学习目标
(1) 掌握常用标识符的命名规则
(2) 掌握常量和变量的定义与引用方法
实例5  常量和变量——输出常量与变量的值
【实例任务】
定义不同类型的几个变量,然后对应输出相应的常量值和变量值。程序的运行结果如图2-1所示。
                          图2-1  程序运行结果
【程序代码】
#include "stdio.h"
#define  A  10 /*定义一个整型常量A*/
#define B  0.1  /*定义一个单精度类型常量B*/
#define C  'x'  /*定义一个字符型常量C*/
#define D  3.14E20  /*定义一个双精度类型常量D*/
#define E  "false"  /*定义一个字符串常量E*/
main()
{ int a=10;/*定义整型变量,同时为变量赋初值*/
  float b;/*先定义单精度型变量,然后再赋初值*/
  b=10.5;
  char c='x';/*定义字符型变量,同时赋初值*/
  double d=3.14e15;/*定义双精度类型变量*/
  /*输出常量和变量值*/
  printf("输出整型常量值为:%d,输出变量a的十进制值为:%d\n",10,a);
  printf("输出变量a的八进制值为:%o,输出变量a的十六进制值为:%x\n",a,a); 
  printf("输出单精度型常量值为:%f,输出变量b的值为:%f\n",10.5,b);
  printf("输出字符型常量值为:%c,输出变量c的值为:%c\n",'x',c); 
  printf("输出双精度型常量值为:%lf,\n输出变量d的值为:%lf\n\n\n",3.14e15,d); 
  /*输出符号常量的值*/
  printf("符号常量A的值为:%d\n",A);
  printf("符号常量B的值为:%f\n",B);
  printf("符号常量C的值为:%c\n",C);
  printf("符号常量D的值为:%lf\n",D);
  printf("符号常量E的值为:%s\n",E); 
  getch ();  }
【相关知识】浮点型变量float
1. 标识符
标识符是用来标识变量名、符号常量名、函数名、数组名、文件名、类名、对象名等,其基本构成元素源自字符集。C语言的字符集包括英文字母、数字字符和一些特殊字符。用这些基本元素单位命名标识符时,一定要遵循以下四个原则:
    (1)必须由字母(a~z,A~Z)或下画线(_)开头;
    (2)由字母、数字或下画线组成的长度不超过32个字符;
    (3)标识符中的大小写字母有区别;
    (4)不能与关键字同名。
下面是不合法的标识符和变量名:
        M.d.,John,y 123,#33,3d64
2.常量
常量是数据在内存中一种表示形式,在程序运行过程中值永远保持不变,常用的类型有5种,包括整型常量、实型常量、字符型常量、字符串常量、符号常量。
整型常量就是整型,常用的表示形式有十进制,如10、30等。八进制常量表示形式要以0开头,如013、012等。十六进制常量表示形式要以0x或0X开头,如0x13、0X12等。
实型常量就是指的是一些带小数点的数,包括指数。如3.14、-1.2、1.2e6、10.5E8等。其中,1.2e6表示数学上1.2×106,10.5E8表示数学上10.5×108
字符型常量是单引号引起来的单个字符,这些字符为ASCII字符,对应各有其ASCII码值。字符常量包括一些转义字符,字符形式和输出结果对照如表2-1所示。
2-1  转义字符
转义字符
输出
转义字符
输出
\n
换行
\a
报警(铃声)
\t
水平制表符
\\
反斜丝
\v
垂直制表符
\?
问号
\b
退回一格
\'
单引号
\r
退格
\"
双引号
\f
换页符
\0
空字符
\ooo
八进制数
\xhhh
十六进制
字符串常量是用双引号引起来的0个或多个字符。字符串常量形式给出的是字符串在存储空间中的起始地址。如“Hello World!”就是一个字符串常量。
    符号常量,是指以标识符来代替一个值,这个标识符的值在程序运行过程中不能再改变。它是在编译预处理阶段使用#define来进行定义,也就是程序的开头来定义。常量名的类型由所给的常量值的类型来定,不再单独指明。符号常量的定义形式为:
        #define 常量名  常量值
如实例中的定义语句“#define  C  'x'”定义了一个符号常量,常量名为C
3.变量
变量是指在程序运行过程中其值可以被改变的量,C语言变量遵循先定义后引用的原则。变量的定义形式为:
数据类型  <变量名列表> 
变量在定义时,可以先定后,后赋值,也可以定义的同时赋初值。如实例中合法的定义形
式:
        int a=10;  /*定义整型变量,同时为变量赋初值*/
        float b;  /*先定义单精度型变量,然后再赋初值*/
        b=10.5;
        char c='x';  /*定义字符型变量,同时赋初值*/
        double d=3.14e15;  /*定义双精度类型变量*/
  变量定义时很灵活,允许在定义的同时对部分变量赋初值,如下列合法的定义语句:
        int  a,b,c=6;
  但不允许同时对几个变量赋同一个值,如下定义语句是错误的:
      int  a=b=c=13;/*这是错误的语句*/
【课堂精练】
1.已知频率求波长。光的速度为3×108/,已知频率为50HZ,求此频率光波的波长。程序的运行结果如图2-2所示。
图2-2  程序的运行结果
根据程序的运行结果,请将下面程序补充完整并调试。
#include  "stdio.h"
main()
{ _________________________________
float f=50.0;
x=c/f;
printf("此光波的波长为:%.2lf",x);
getch();  } 
2.摄氏温度和华氏温度的转换。已知摄氏温度与华氏温度的转换公式为:C=5(F-32)/9,输入摄氏温度的值,请输出华氏温度的值,程序的运行结果如图2-3所示。
              图2-3  程序的运行结果
根据程序的运行结果,请将下面程序补充完整并调试。
#include  "stdio.h"
main()
{ float F,C;  /*F为摄氏温度,C为华氏温度*/
  printf("请输入摄氏温度的值:\n");
  ___________________________________
  getchar();
  C=5*(F-32)/9;
  printf("摄氏温度%.1f所对应的华氏温度为:%.1f",F,C);
    getch(); 
2.2 数据类型
学习目标
(1) 掌握几种常用的数据类型
(2) 理解不同数据类型间的转换
实例6  基本数据类型——输出不同数据类型的值
【实例任务】
定义不同类型的变量,并进行一定的简单运算,要求输出不同类型表达式的值。程序的运行结果如图2-4所示。
                          图2-4  程序运行结果
【程序代码】
#include "stdio.h"
main()
{ int a=32767,b=1;              /*定义ab为整型变量*/
long c=2147483647,d=1;            /*定义cd为长整型变量*/
unsigned e=65535,f=1;    /*定义ef为无符号整型变量*/
int x=123,y=0123,z=0x123;  /*定义整型变量,并赋不同进制的值*/
float m=5.4,n=2.2,sum,sep; /*定义单精度类型变量*/
char ch1='a',ch2='b';  /*定义字符型变量*/
char c1='A',c2='B';
char *p="C language";  /*定义指向字符串的指针变量*/
printf("int:%d,  %d\n",a,a+b);
printf("long:%ld,  %ld\n",c,c+d);
printf("unsigned:%u,  %u\n\n",e,e+f);
printf("%d  %d  %d\n",x,y,z);/*十进制格式输出*/
printf("%o  %o  %o\n",x,y,z);/*八进制格式输出*/
printf("%x  %x  %x\n\n",x,y,z); /*十六进制格式输出*/ 
sum=m+n;
sep=m/n;
printf("%.2f+%.2f=%.2f\n",m,n,sum);
printf("%.2f/%.2f=%f\n\n",m,n,sep);
printf("ch1=%c,ch2=%c\n",ch1,ch2);
printf("ch1=%d,ch2=%d\n\n",ch1,ch2); 
c1=c1+32;
c2=c2+32;
printf("%c,%d\n",c1,c1);
printf("%c,%d\n",c2,c2);
printf("%s\n",p);
getch();
}
【相关知识】
1.整型数据
根据占用内存字节数的不同,整型变量又分为4类:
1)基本整型(类型关键字为int)。
2)短整型(类型关键字为short  [int])。
3)长整型(类型关键字为long  [int])。
4)无符号整型。无符号型又分为无符号基本整型(unsigned  [int])、无符号短整型(unsigned  short)和无符号长整型(unsigned  long)三种,只能用来存储无符号整数。
整型数据或变量占用的内存字节数,随系统而异。在16位操作系统中,一般用2字节表示一个int型变量,且long型(4字节)≥int型(2字节)≥short型(2字节)。显然,不同类型的整型变量,其值域不同。占用内存字节数为n的(有符号)整型变量,其值域为:-215(2
15-1);无符号整型变量的值域为:0(21 6-1)。不同整型变量的长度和取值范围如表2-2所示。
2-2  整常数类型的字节长度和取值范围
数据类型
字节长度
                取值范围
int
    2
-3276832767          -215(215-1)
    short
    2
-3276832767          -215(215-1)
    long
    4
-21474836482147483647    -231(231-1)
unsigned int
    2
065535                  0(216-1)
unsigned short
    2
065535                  0(216-1)
unsigned long
    4
04294967295            0(232-1)
2.实型数据
C语言的实型变量,分为两种:
1)单精度型:类型关键字为float,一般占4字节、提供7位有效数字。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。