一、条件编译
条件编译是指预处理器根据条件编译指令,有条件地选择源程序代码中的一部分代码作为输出,送给编译器进行编译。
分三种情况:
1、#ifdef 标识符 {程序段}#endif
2、#ifndef 标识符{程序1}#else{程序2}#endif #else{程序2} #endif
3、#if常量表达式{程序段1}#else常量表达式{程序段 2}#else{程序段3}#endif
二、类型转换
不同类型数据间进行混合运算,如果两个数据类型不同,则先自动进行类型转换,使两者具有同一种类型,然后进行运算。
1、运算中两个数中有一个数为float或者double型,结果就是double型。因为系统是将float型转换为double进行运算。
2、如果int型与float或者double型数据进行运算,先把int型和float型转换为double型,然后运算,结果是double型。
//类型转换
int main()
{
//计算是系统会将int类型的a,转换为double类型后相加,出来的结果会以浮点型%f打印
int a = 20;
double b = 10.23456;
printf("%f\n",a+b);
return 0;
}
3、字符型与整形数据进行运算、实际用字符ASCLL码值与整形进行运算,如果与实型运算,方法与第二种一样。
4、整形有符号转为无符号后,在进行运算。
注意:float型:有效数字6-7位;
double型:有效数字15位;
三、强制类型转换
//强制类型转换
int main()
{
char a = 10;
int b;
// b = (int)a;
printf("%d",a+b);
return 0;
}
四、赋值转换
//赋值转换
int main()
{
char a = 10;
int b;
b = (int)a; //强制类型转换
b = a; //隐式类型转换
printf("%d",b);
printf("%c",b);
return 0;
}
下面有几个练习题:
1、找出元素中最大值,最小值
//找出元素中最大值,最小值
int c[10] = {12,13,14,15,16,17,8,9,1,34};
int max = c[0];
int small = c[0];
int i;
for(i=1;i<10;i++){
if(c[i]>max){
max = c[i];
}
if(c[i]<small){
small = c[i];
}
}
printf("数组中最大数为:%d\n",max);
printf("数组中最小数为:%d",small);
2、找出浮点型数组元素中最大值,最小值
//找出浮点型数组元素中最大值,最小值
float a[5] = {1.0,2.5,1.4,6.9,3,2};
float max = a[0];
float small = a[0];
int i;
for(i=0;i<5;i++){
if(a[i]>max){
max = a[i];
}
if(a[i]<small){
small = a[i];
}
}
printf("最大的浮点数为:%.1f\n",max);
printf("最小的浮点数为:%.1f",small);
3、用符号常量定义数组大小,并初始化数组
//用符号常量定义数组大小,并初始化数组
int a[N]={34,56,34,23,25};
int b;
for(b=0;b<N;b++){
a[b] = b;
printf("%d ",a[b]);
}
4、循环输入6年某高校的录取分数,求平均分和最低分
//循环输入6年某高校的录取分数,求平均分和最低分
int fen[6] = {0};
int i;
int sum;
printf("请输入6个数组元素:");
for(i=0;i<6;i++){
scanf("%d",&fen[i]);
}
for(i=0;i<6;i++){
printf("%d ",fen[i]);
}
for(i=0;i<6;i++){
sum += fen[i];
}
printf("平均分为:%d\n",sum/6);
int min = fen[0];
for(i=0;i<6;i++){
if(fen[i]<min){
min = fen[i];
}
}
printf("最低分为:%d\n",min);