变量
- 在程序执行过程中其中的值可以被改变的量。
- 变量代表内存中具有特定属性的一个存储单元,它是用来存放数据的,即存放变量的值的;
- 变量应该有一个名字,以便按名字引用(使用)变量。
- 变量定义格式;
数据类型 变量名列表;
-
变量名的命名要符合下列两个规则:
-
变量名必须以字母或下划线开头,后面可以跟若干个字母、数字或下划线;
-
变量名不能与C语言中已经存在的标识符重名
-
变量名、变量值、变量所占存储单元之间的关系
C语言中的标识符
对标识符的定义 用来标识对象的名字的有效字符。对象包括变量、函数、数组、类型等。即标识符就是对象的名字。
标识符的构成
C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个必须为字母或下划线。
编译系统对大小写敏感。变量名一般用小写字母表示。
C语言中有3类标识符
- 关键字 有32个,系统有特定的含义和用途,如:float、 int、if、else等,不能用作变量名;
- 系统预定义的标识符 如系统提供的库函数名sin、printf、main及预编译命令define、include等;
- 用户标识符 用户定义的标识符,用来给程序中的变量、自定义函数、符号常量、数组、结构体、共用体、文件等命名。
整型变量的定义
- 一个类型说明语句可以同时定义多个同类型的变量,各变量之间用逗号“,”分隔。多个同类型的变量也可以用多 个类型说明语句定义;
- 用类型说明语句定义的变量只是说明了为这些变量分配了 存储空间,以便用于存放与之相同类型的数据,在未对这 些变量赋值前,这些变量中(即存储空间中)的值是随机的;
- C语言允许在定义变量的同时为变量赋初值;
- 在为长整型变量初始化或赋值时,如果被赋数据为基本整 型常量,则C编译系统自动将被赋数据转换成与相应变量的类型一致;
- 由于各种整型变量所占的字节数有限,因此,它们所能存放的整数有一定的范围。
用来存放整型数据的变量
- 我们定义一个整型的变量,C编译系统实际是在内存中分配了能够存储一个整型数据的存储空间,并用变量名来标识这个空间,对该空间的使用也就可]以通过变量名来访问。
- 若不知道所用的C编译系统对变量分配的存储空间大小,可用sizeof运算符查询,如: printf(“%d,%d,%d\n”,sizeof(int),sizeof(short),sizeof(long));
整型变量的定义与使用。C源程序如下
#include <stdio.h>
void main()
{ int a,b,c,d;
unsigned int u;
a=12;b=-24;u=10;
c=a+u;d=b+u;
printf(“ a+u=%d, b+u=%d\n",c,d);
}
运行结果为:
a+u=22 , b+u=-14
整型数据在内存中的存放形式
数据在内存中是以二进制形式存放的。如果有以下语句:
int i; /定义i为整型变量/
i=10; /给i赋整数10为值,若在内存中占2字节/
则十进制数10的二进制形式为1010,在内存中的实际存放形式为:
整型数据在内存中的存放形式
- 正数的补码和原码(即该数的二进制形式)相同;
- ● 负数的补码是将该数绝对值的二进制形式,按位取反再加1。 例如-10的补码是:1111111111110110。因为:
可见:在存放整数的存储单元中,一般情况下,最左边的一位用来表示符号位。符号位为“0” 时表示正数,符号位为“1”时表示负数。
浮点型变量
浮点型变量的分类
浮点型数据在内存中的存放形式
浮点型数据在内存中按照指数形式存放。系统将一个浮点数分成小数部分和指数部分,分别存放。
-
写出27.5在内存中的存放方式:
-
27.5的二进制为11011.1 指数表示法: 1.10111*2^4
-
指数:4,加上127,就是131,二进制1000 0011
-
尾数(小数点后的数)10111,补够23位 1011 1000 0000 0000 0000 000
-
用二进制表示就是 (符号数位1位)0 (指数位8位)1000 0011 (尾数位23位)1011 1000 0000 0000 0000 000
字符变量
-
字符型变量用来存放字符常量。字符型变量的定义方式如为:
…… char c1,c2;
c1=‘a’;
c2=‘b’;
printf(“c1=%c\n",c1);
printf(“c2=%c\n”,c2);
……
字符数据在内存中的存储形式及其使用方法
- 将一个字符常量存入一个字符变量,实际上并不是把该字符本身存入内存单元中,而是将该字符对应的ASCII码存入内存单元中。
char c1 =‘a’,c2 =‘b’ ;
‘a’的ASCII码为97、 ‘b’的ASCII码为98,它们在内存中的存放形式为:
字符数据在内存中的存储形式及其使用方法
由前可见,在内存中字符数据的存储形式与整型数据的类似,这就使得字符型数据和整型数据之间可以通用。即一个字符数据既可以字符形式输出,也可以整数形式输出
以字符形式输出时,系统先将内存单元中的ASCII码转换成相应字符,然后输出。
以整数形式输出时,直接将ASCII码作为整数输出。
因此,可以对字符数据进行算术运算,这时相当于对其ASCII码进行算术运算。
给字符变量赋整数为值。
#include <stdio.h>
void main( )
{ char c1,c2;
c1= 97;c2= 98;
printf(“%c %c \n”,c1,c2); /*以字符形式输出*/
printf(“%d %d \n”,c1,c2); /*以整数形式输出*/
}
运行结果为:
a b
97 98
#include <stdio.h>
void main( )
{ char c1,c2;
c1= ‘a’;c2=‘b’; c1=c1-32;c2=c2-32;
printf(“%c %c\n”,c1,c2);
}
运行结果为:
A B
英文大小写字母的转换
#include "stdio.h"
int main()
{ char x,y,c1,c2;
x='A';
y='B';
c1=x+32;
c2=y+32;
printf("x=%c,y=%c\n",x,y);
printf("c1=%c,c2=%c\n",c1,c2);
}
这个程序的输出结果为
x=A,y=B
c1=a,c2=b
’;c2=‘b’; c1=c1-32;c2=c2-32;
printf(“%c %c\n”,c1,c2);
}
运行结果为:
A B
###### 英文大小写字母的转换
#include “stdio.h”
int main()
{ char x,y,c1,c2;
x=‘A’;
y=‘B’;
c1=x+32;
c2=y+32;
printf(“x=%c,y=%c\n”,x,y);
printf(“c1=%c,c2=%c\n”,c1,c2);
}
这个程序的输出结果为
x=A,y=B
c1=a,c2=b