【C语言】数组 条件编译 类型转换 强制转换 赋值转换

本文介绍了C语言中的条件编译,包括#ifdef、#ifndef和#if常量表达式等用法。接着讲解了类型转换的规则,如自动类型提升、字符型与整形的转换等,并提到了强制类型转换。最后,文章提及了赋值转换的概念,并给出了几个相关的练习题,如找数组中的最大值和最小值、计算浮点型数组平均分等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、条件编译
条件编译是指预处理器根据条件编译指令,有条件地选择源程序代码中的一部分代码作为输出,送给编译器进行编译。 

分三种情况:
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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值