7 数据的表现形式——变量
变量:在程序运行期间,变量的值是可以改变的。
变量的本质实际就是一块存储空间;
注意:
- 变量必须先定义,后使用;
- 定义变量时指定变量的名字和类型。
变量的命名:
简单地说,标识符就是一个对象的名字。
C的标识符有三种:
- 保留字(关键字):指一些特定的单词,留作他用(比如int、float、if等);
- 预定义标识符:预先定义的库函数名,预定义命令等(比如sin(库函数),define(预定义命令));
- 用户标识符:用户给对象起的名字。
C语言规定标识符只能由字母、数字、下划线三种字符组成,且第一个字符不能为数字;
例如:以下为合法的标识符:
sum、_total、Class、li_fy、hanyh_
以下不是合法的标识符:
M.D.john、¥529、#hyh、7D24、H>l
注意:用户标识符不得使用保留字( 关键字),可以使用预定义标识符(最好不用,以免引起混淆)。
整型变量:
例如:定义一个整型变量,并赋值;
int i;
i=10;
整型变量的分类:
1、基本型;类型说明符为 int ,占4个字节;
2、短整型:类型说明符为short int或short,占2个字节;
3、长整型:类型说明符为long int或long,占4个字节;
4、无符号型:类型说明符为unsigned;
无符号型又可以分为3种类型:
无符号基本型:unsigned int 或 unsigned;占4个字节;
无符号短整型:unsigned short;占2个字节;
无符号长整型:unsigned long;占4个字节;
各类整型量所分配的内存字节及数的表示范围:
整型变量的定义:
一般形式:
类型说明符 变量名标识符,变量名标识符……
例如:
int a,b,c; //a,b,c被定义为整型变量;
long x; //x被定义为长整型变量;
unsigned o,p; //o,p被定义为无符号基本整型变量;
注意:
- 在一个类型说明符后面可以定义多个相同类型的变量。各变量名之间要用逗号间隔,类型说明符与变量名之间至少用一个空格间隔;
- 最后一个变量名之后必须以分号“;”结尾;
- 变量定义必须放在使用这个变量之前,放在函数体的开头部分。
例如:
定义x,p,i为短整型变量,p+i赋值给x,求x;
#include <stdio.h>
int main()
{
short x,p,i;
p=5;
i=29;
x=p+i;
printf("x=%hd\n",x);
return 0;
}
程序分析:
例题:整型数据的溢出。
编译、连接、执行:
程序分析:
该题目是整型数据的溢出问题。
1、短整型(short int)的表示范围为 -32768~32767;
2、a,b均为被定义为短整型变量,a=32767,b=a+1;
3、按道理来说输出b应为32768,但是32768超出了短整型的表示范围;
4、则b为 -32768。
实型变量:
分类:
- 单精度型(float),占4个字节;数值范围3.4e-38~3.4e+38,只能提供7~8位有效数字;
- 双精度型(double),占8个字节,数值范围1.7e-308~1.7E+308,可提供16位有效数字;
- 长双精度型(long double)
注意:
#include <stdio.h>
int main()
{
float a,b,c,d;
a=1/3;
b=1.0/3;
c=1.0/3.0;
d=1.0/3*3;
printf("%f\n%f\n%f\n%f\n",a,b,c,d);
return 0;
}
编译连接执行;
字符变量:
字符变量用来存储字符常量,即单个字符;
说明符为char;
例如:
char a,b;
char c = ‘?’; //注意这里系统会把“?”的ASCII值63赋给变量c;
例题:编写C程序,实现大小写字母转换;
源代码:
#include <stdio.h>
int main()
{
char a='x',b='Y'; //定义x,Y为字符变量;
a=a-32; //小写转大写-32;
b=b+32; //大写转小写+32;
printf("x:%c\nY:%c\n",a,b);
/*%c字符型输出,输出一个字符;
注意输出表列是a,b,不是x,Y;
*/
return 0;
}
编译连接执行:
程序分析:
- 参照附录表可知某个小写字母与对应的大写字母相差32;
- 例如:A 在ASCII码表中,对应的值是65; a 对应的值是97;
- 小写字母转成大写字母就-32;
- 大写字母转成小写字母就+32。
- 最后输出的时候以%c字符型输出输出一个字符。
注意:
1、字符变量不能被定义两次;例如:
char ch = 'A';
char ch = 'B';
这样定义会报错,因为ch被定义了两次
2、在输出字符变量的值时,可以以十进制%d形式输出,可以以字符形式%c输出;例如:
char c = '?';
printf("%d %c\n",c,c);
输出结果为:
63 ?
说明:用%d格式输出十进制整数63,用%c格式输出字符‘?’。