变量的概念
? ? ? ? ? ? ?C语言中的变量是指在程序运行时其值可以改变的量,变量的功能就是存储数据。(x或者y)变量是一段实际连续存储空间的别名,程序中通过变量来申请并命名存储空间,通过变量的名字可以使用存储空间(变量名就是内存单元的地址)。
变量的命名
? ? ? ? ? ? ?1.变量名只能是字母(A-Z,a-z)、数字(0-9)或下划线。
? ? ? ? ? ? ?2.第一个字母不能是数字。
? ? ? ? ? ? ?3.不能是c++关键字,要见名知义比如sum是求和
变量的定义
? ? ? ? ? ? ?定义变量的格式:类型 变量名 。比如int? x:int? y这是把x和y定义成整型变量?
整型变量
? ? ? ? ? ? ?整型变量是一种计算机语言。在c语言中,整型变量的值可以是十进制,八进制,十六进制,但在内存中存储着是二进制数。变量顾名思义是数值可以变的量,整型变量表示的是整数类型的数据。
? ? ? ? ? ?整型变量的分类
? ? ? ? ? ? ?整型变量分为基本整形(用int定义),短整型(short或short? int定义),长整型(long或long? int定义),无符号型。
无符号类型就是与其他类型连用,不写默认有符号类型,写了可以扩大数的范围(下面取值范围有讲),有符号的申请时前面加上signed(可以省略比如signed? int? x),无符号的加上unsigned。
? ? ? ? ? ? ?(1)无符号基本型 类型说明符为unsigned int或unsigned。
? ? ? ? ? ? ?(2)无符号短整型 类型说明符为unsigned short
? ? ? ? ? ? ?(3)无符号长整型 类型说明符为unsigned long? ?
?【例1】整型变量的定义与使用
#include<stdio.h>
int main(){
int x,y,z;
unsigned int u;
x=1;
y=2;
u=3;
z=x+y+u;
printf("z=%d",z);
return 0;
}
?
?不同类型的可以运算
? ? ? ? ? ? 整型变量的取值范围? ?
? ? ? ? ? ? ?在32位操作系统中,int如果占4个字节的话,算上首部的正负号他的取值范围2^-31~2^31-1(变量的那篇关于整形数据的存储有讲到),如果要扩大数值,要把存放正负号的位置也存放数字这样的范围是0~2^32-1。
?
? ? ? ? ? ?整形数据的溢出?
? ? ? ? ? ? 当前编译器为int类型数据分配了4个字节(对应32比特位),所以有符号int类型变量a和b的取值范围是-2147483648到2147483647,所以当a取值2147483647,再加1时,就会出现“溢出”的情况,其结果b发生了反转,变成了-2147483648。
a: 0111 1111 1111 1111 1111 1111 1111 1111 (共32位)
b: 1000 0000 0000 0000 0000 0000 0000 0000 (共32位)
a和b最前面的1表示的是正负号。
#include<stdio.h>
int main(){
int x,y;
x=2147483647;
y=x+1;
printf("y=%d",y);
return 0;
}

? ? ? ? ?实型变量?
? ? ? ? ? ? ?在程序运行过程中可以改变其值的实型量被称为实型变量,
? ? ? ? ? ?实型变量的分类? ?
? ? ? ? ? ??在程序运行过程中可以改变其值的实型量被称为实型变量,实型变量根据数值的范围可分为单精度(float)(小数点后可以保留6位),双精度(double)(小数点后可以保留15位)
? ? ? ? ? 实型变量的定义和使用
【例2】实型变量的定义与使用
#include<stdio.h>
int main(){
float x,y;
double a,b;
x=1.23;
a=-2.36;
y=x+a;
b=x+a;
printf("y=%f,b=%f",y,b);
return 0;
}

?可以看出单精度和双精度可以一起运算,结果是六位小数与%f有关,后边的章节我们会学到。
? ? ? ? ? ?实型数据的精度与舍入误差
? ? ? ? ? ? ?float和double的范围都是有限的float是1.2*10^-38~3.4*10^38,double是2.3*10^-308~1.7*10^308,当数据超出这个值,超出的部分就会丢失,会产生一定的误差。
【例3】
#include<stdio.h>
int main(){
float x;
double a;
x=123456789.123;
a=123456789123456729.123;
printf("x=%f,a=%f",x,a);
return 0;
}

? ? ? ? ? ? ?由例题知float前七位是精确的,后两位是随机的,超出的小数部分丢失。double前16位是精确的,后边的是随机的,小数部分丢失。
? ? ? ? ? 字符型变量
? ? ? ? ? ? ?字符变量及其使用
? ? ? ? ? ? ? 字符变量是用来存放字符常量的,一个字符变量中只能存放一个字符。 字符变量的定义形式如右:char x1,x2; 定义了两个字符型变量。可以使用赋值语句对变量x1和x2赋值,如:x1='x’;x2='y';?字符型数据(常量和变量)在内存中占一个字节的空间。
#include<stdio.h>
int main(){
char x,y;
x='a';
y='b';
printf("%c,%c",x,y);
return 0;
}

%c后边会学她是输出字符的
? ? ? ? ? ? 字符变量在内存中的存储形式
? ? ? ? ? ? ? 字符在内存中是以ascII来存的,利用ASCII表把字符转换成数字,再把数字转换成补码存储在内存中

?
|