第一种:float num =(a+b)/ 2.0,会存在溢出现象。
第二种:float num = a+(b-a)/ 2.0。
第三种:float num = a&b+((a^b)>>1),直接操作bite位,效率更高。
a&b:相当于同一个bite位上相同的平均值,相同的平均值即为自身。
a^b:相当于同一个bite位上不相同的数之和。
>>1: 相当于除以2 ,求平均值。
第一种
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void everage(int a, int b)
{
float num = 0;
num = (a + b) / 2;
printf("%d\n", num);
}
int main()
{
int a = 0;
int b = 0;
printf("请输入两个数:\n");
scanf("%d,%d", &a, &b);
everage(a,b);
system("pause");
return 0;
}
第二种
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void everage(int* a, int* b)
{
float num = 0;
num = *a + ( *b - *a ) / 2.0;
printf("%f\n", num);
}
int main()
{
int a = 0;
int b = 0;
printf("请输入两个数:\n");
scanf("%d,%d", &a, &b);
everage(&a, &b);
system("pause");
return 0;
}
第三种
#include<stdio.h>
#include<stdlib.h>
void everage(int a, int b)
{
int num = 0;
num = ( a & b)+ ((a^b) >> 1),
printf("%d\n", num);
}
int main()
{
int a = 7;
int b = 9;
everage(a, b);
system("pause");
return 0;
}