一,变量的定义
1,格式:数据类型 变量名列表;
eg;int a,b;
注意:在C语言中,数据定义语句\控制操作语句都要以分号结尾
eg:求变量的字符数
源代码:
#include
int main()
{
int a;
short b;
unsigned char c;
printf("%d,%d,%d\n",sizeof(a),sizeof(b),sizeof(c));
}
【sizeof是用于测量数据类型(或变量)所分配的内存字节数的运算符,用于测试的对象数据必须用圆括号括起来】
二,变量的赋值
注意:变量的使用原则:“先定义,后使用” ,多个变量名之间用逗号隔开,最后以分号隔开
法一:先定义变量后赋初值或者在需要时再赋初值
源代码:
#include
int main()
{
int a,b,c;
a=12;
b=24;
c=a+b;
printf("%d,%d,%d\n",a,b,c);
}
法二:定义变量的同时赋初值
eg;int a=-1;
三,变量更改值
关键句:后面的值把前面的值覆盖掉,变量最终的值为最后一次所赋的值
源代码:
#include
int main(){
double r,s=0.0;
r=5.0;
s=3.14*r*r;
printf("r=%f,s=%f\n",r,s);
r=6.0;
s=3.14*r*r;
printf("r=%f,s=%f\n",r,s);
}
四,数据溢出
注意:数据溢出在程序运行过程中不会提示错误
源代码:
#include
int main()
{
short a,b,c,d;
a=32767;
b=a+1;
c=-32768;
d=c-1;
printf("%d\n%d\n%d\n%d\n",a,b,c,d);
}
【小结:当赋值给变量的数值超过该变量的数据类型的取值范围之后,变量的值就会从最小值开始】
五,整形数据转换
1,强制类型转换语法格式:(类型名) 变量名
eg: long a; short c=(short)a;
注意:int型\long型在向short型转换时,系统会截断高位的数据,只保留低位的数据
eg:
源代码:
#include
int main()
{
int i;
short k;
i=200000;
k=i;
printf("%d,%d\n",i,k);
}
【数据溢出】
(1)
实型变量赋值时,会根据变量的数据类型截取相应的有效位数
double类型向float型数据转换时需要进行强制类型转换
eg:
源代码:
#include
int main()
{
float a,b;
double c;
a=34.5897621159;
c=34.5897621159;
b=(float)c;
printf("a=%f\nb=%f\nc=%f\n",a,b,c);
}
【由于float,double类型的有效位数不同造成所得的数据类型不同】
六,字符型变量
1,字符型数据在内存中存储的不是字符本身,而是该字符对应的ASCII码值
2,C系统认定字符型数据和整形数据在字符型数据的取值范围内可以通用。两者都可以用“%d”,”%c”格式输出,并可以一起进行算术运算
源代码:
#include
int main()
{
int a=90;
char c='c';
printf("a=%c,c=%c\n",a,c); //整型变量按字符格式输出
printf("a=%d,c=%d\n",a,c); //字符型变量按整形格式输出
printf("a-c=%d,a*c=%d\n",a-c,a*c); //字符型与整形数据进行算术运算
}
字符型数据可以当做一个较小的整形数据参与到算术运算中
eg:
源代码:
#include
int main()
{
char ch1,ch2,ch3,ch4;
ch1='a';
ch2='B';
ch3=ch1-32; //小写转大写
ch4=ch2+32; //大写转小写
printf("%c,%c\n",ch3,ch4);
}
七,数据类型转换
1,自动类型转换
(1)级别低的类型转换为级别高的类型
(2)原则:为运算结果提供尽可能多的有效数字
低——高:short,char–int–unsigned–ynsigned long–float–double
eg:
源代码:
#include
int main()
{
int a;
char b;
double c;
a=12;
b='g';
c=a*b;
printf("%f\n",c);
}
2,强制类型转换
(1)将数据类型级别高的数据赋值给数据类型级别低的变量时,系统无法进行数据类型的自动转换,此时需要用户蒋某中数据类型强制转换为另一种数据类型
(2)格式:(类型名)表达式
注意:强制类型转换得到的是所需类型的中间变量,而原变量的类型并没有改变 ;实型转换为整型时,要截断小数位,并非四舍五入;实型转换为字符型时,以字符型的方式存储,舍弃小数部分;有符号位相无符号为转换时,原来的符号位转为数据的一部分,无符号位转为符号位,最高位被当做符号位
eg:
源代码:
#include
int main()
{
int a;
double d;
a=12;
d=(double)a;
printf("%d,%d\n",sizeof(a),sizeof(d));
}