文章目录
变量
1.为什么需要变量
变量是程序的基本组成单位
#include <stdio.h>
int main(void){
int num = 1; //定义了一个整型变量,取名为num,并赋值为1
double score = 2.3;//小数
char gender = 'A';//字符
char name[] ="尚硅谷";//字符串
//说明 格式化输出
//1.如果输出的整数 %d
//2.如果输出的是小数 %f ,如果希望保留小数点%.4f
//3.如果输出的是字符 %c
//4.如果输出的是字符串 %s
printf("num=%d score=%.2f gender=%c name=%s",num,score,gender,name);
//getchar();//将控制台停留,等待输入
return 0;
}
2.变量的介绍
2.1概念
变量相当于内存中一个数据存储空间的表示,可以将变量看作一个房间的门牌号,通过门牌号我们可以找到房间,而2通过变量名可以访问到变量(值)
2.2基本使用步骤
(1)声明变量 int num;
(2)赋值 num = 60;
(3)使用 printf(“num=%d”,num);
3.变量使用注意事项
1)变量表示内存中的一个存储区域
2)该区域有自己的名称和类型
3)必须先声明,后使用
4)该区域的数据可以在同一范围内不断变化
4.变量的数据类型
注意:在c中,没有字符串类型,使用字符数组表示字符串
在不同的系统上,部分数据类型字节长度不一样,int 2 或 4
5.整型的使用细节
(1)各种类型的存储大小与操作系统,系统位数和编译器有关,目前通用的以64位系统为主。
1> c语言的整型类型,分为有符号signed和无符号unsigned两种
2> c程序中整型常声明为int型 ,除非不足以表示大数,才使用long long
3> bit(位):计算机中的最小存储单位。byte(字节):计算机中基本存储单元。
1 byte = 8 bit
查看字节代码
#include <stdio.h>
int main(){
//如果定义成int,默认就是带符号(分正数和负数)
int num1 = -2147483649;//越界
signed int num2 = -2147483647;
//查看系统int有几个字节
printf("\nint的字节数=%d",sizeof(int));
printf("\nnum1=%d num2=%d",num1,num2);
getchar();//将控制台停留,等待输入
}
有关越界 long long型
#include <stdio.h>
int main(){
long long num1 = 12147483647;
//如果输出的是long 则格式%lD
//如果输出的是long long 则格式%llD
printf("%lld",num1);
getchar();
}
浮点类型
1.浮点类型的分类
说明:
1> 在机器中存放形式 ,浮点数=符号位+指数位+尾数位,浮点数是近似值
2>尾数部分可能丢失,造成精度损失
2.使用细节
1)浮点常量默认为double型,声明float型常量时,必须后加‘f’或‘F’
2)两种表示形式:1.十进制数形式:如5.12 512.0f .512(必须有小数点) 2.科学计数形式:如:5.12e2 5.12E-2
3)printf(“d1=%f”,d1);//在输出时,默认保留 小数点6位
代码:
#include <stdio.h>
int main(){
//浮点类型常量默认为double 型,声明float型常量,须后加f或F
float d1 = 1.189099500;//从“double”到“float”截断,1.1是double
float d2 = 1.1f;//1.1f就是float
double d3 = 1.3;//ok
double d4 = 5.12;
double d5 = .512;//等价0512
double d6 = 5.12e2;//等价5.12*(10^2)=512
double d7 = 5.12e-2;//等价5.12*(10^-2)=0.0512
//在输出时,如果%f默认保留小数点6位
printf("d1=%.15f d2=%f d3=%f d4=%f d5=%f d6=%f d7=%f",d1,d2,d3,d4,d5,d6,d7);
getchar();
}
字符类型
1.基本介绍
字符类型可以表示单个字符,字符类型是char,char是1个字节(可以存字母或数字),多个字符称为字符串,在语言中使用char数组表示,数组不是基本数据类型,二十构造类型
#include <stdio.h>
int main(){
char a = 'a';
char b = 'b';
char c = 97;//ASCII编码表对应97的字符是a
int num = c+10;//
printf("a=%c b=%c c=%c\n,",a,b,c);
//注意
//这里编译器是c89
//要求变量的定义在执行语句之前
// int num = c+10;
printf("num=%d",num);
getchar();
}
布尔类型:boolean
1.C语言标准(C89)没有定义布尔类型,所以C语言判断真假时以0为假,非0为真
2.C语言的宏定义
#include <stdio.h>
//宏定义
#define BOOL int
#define TURE 1
#define FALSE 0
int main(){
int isPass = -1;//0表示假,非0表示真
//可以使用宏定义来完成
//定义一个布尔变量
BOOL isOK = TURE;//等价int isOK = 1
if(isPass){
printf("通过考试");
}
if(isOK){
printf("ok");
}
getchar();
}
基本数据类型转换
1.自动类型转换
介绍:当c程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这个就是自动类型转换。
演示案列:
//自动转换
#include <stdio.h>
int main(){
//案列1
char c1 = 'a';
int num1 = c1;//ok
double d1 = num1;//ok
//案例2
short s1 = 10;
int num2 =20;
int num3 = s1 + num2;//ok
//案例3
float f1 = 1.1f;//ok
double d2 = 4.56245577;
f1 = d2;//出现精度损失
printf("d1=%f",d1);
printf("num3=%d",num3);
printf("f1=%.8f",f1);
getchar();
}
2.强制类型转换
1.介绍:将精度高的数据类型转换为精度小的数据类型。使用时要加上强制转换符(),但可能造成精度降低或溢出
//强制转换
#include <stdio.h>
int main(){
double d1 =1.987;
int num = (int)d1;//注意,不是进行四舍五入,而是直接截断小数点后的部分
//强制转换只对最近的数有效,如果希望针对更多的表达式转换,使用()
int num2 = (int)3.5*10 + 6*1.5;//39
int num3 = int(3.5*10 + 6*1.5);
printf("\nnum2=%d",num2);
printf("num=%d d1=%f",num,d1);//d1仍然是double类型
getchar();
}