float* g_score;g_score = new float [mapSize];for (uint i=0; i<mapSize; i++) { g_score[i]=infinity; }这样对么
时间: 2023-06-12 22:04:18 浏览: 94
这段代码中存在一处错误。在 for 循环中,i 的自增操作应该为 i++ 或者 i+=1,否则会导致无限循环。
正确的代码应该是:
```
float* g_score;
g_score = new float[mapSize];
for (uint i = 0; i < mapSize; i++) {
g_score[i] = infinity;
}
```
这段代码的作用是创建一个大小为 mapSize 的浮点型数组,并将数组中的每一个元素初始化为 infinity。其中,new 运算符用于在堆上动态分配内存,避免了栈溢出等问题。
相关问题
float怎么转换为uint8_t,uint8_t怎么转换为float
在C语言中,可以使用类型转换来将float类型转换为uint8_t类型,以及将uint8_t类型转换为float类型。
1. 将float转换为uint8_t:
```c
void FloatToUint8(uint8_t *char_array, float32_t *data, uint16_t size) {
uint16_t i;
for(i = 0; i < size; i++) {
char_array[i] = round(data[i]);
}
}
```
这段代码使用了round函数来对float类型的数据进行四舍五入取整,并将结果存放在char_array数组中。
2. 将uint8_t转换为float:
```c
float32_t Uint8ToFloat(uint8_t *char_array, uint16_t size) {
float32_t result[size];
uint16_t i;
for(i = 0; i < size; i++) {
result[i] = (float32_t)char_array[i];
}
return result;
}
```
这段代码将uint8_t类型的数据转换为float类型,并将结果存放在result数组中,最后返回result数组。
阅读全文