举例如下:一个数组{915,941,960,976,992,1015,1034,1050,1073,1089,1115,1131,1150,1166,1182,1208,1227};目标值假设是1000,最接近元素为992,下标为4
#includeint main() { int min = (1 << 31) - 1;//初始化int类型的,是它成为32位的最大数2^32-1 int idx = 0;//把下标用idx表示,并初始化为1 int arr[] = { 915, 941, 960, 976, 992, 1015, 1034, 1050, 1073, 1089, 1115, 1131, 1150, 1166, 1182, 1208, 1227 }; int n = 1000; for (int i = 0; i < sizeof(arr) / sizeof(int); i++)//sizeof(arr) / sizeof(int)表示该数组中int类型元素的个数 { int diff = arr[i] - n;//依次索引,计算出元素与n的差值 if (diff < 0) diff = -diff;//作差小于0就去绝对值 if (diff < min) { min = diff;//让绝对值最小的数作为新的min idx = i;//记录下标(从0索引) } } printf("最接近的是%d 下标是%d", arr[idx], idx); return 0; }
在c语言中的1<
如1<<3表示把1的二进制0000 0001左移三位即:0000 1000
也即:
n=1 1*2
n=2 1*2*2
n=3 1*2*2*2
int类型占4个字节,32位,最大值是2^31-1



