修改代码for(int i = 0; i < n; i++) { std::cout <<std::setfill('0') << std::setw(2) << std::hex << (hexArray[i] & 0xff) << " "; if(hexArray[3i+6] == 0x01 || hexArray[3i+6] == 0x02 || hexArray[3i+6] == 0x03 || hexArray[3i+6] == 0x04 || hexArray[3i+6] == 0x05 || hexArray[3i+6] == 0x06) { angle[i] = hexArray[3i+7] + hexArray[3i+8] * 256; std::cout << (angle[i]) << std::endl; } }error: invalid types ‘int*[__complex__ int]’ for array subscript angle[i] = hexArray[3i+7] + hexArray[3i+8] * 256;
时间: 2024-02-04 12:03:24 浏览: 67
这个错误提示表明 angle 数组可能被错误地声明为指向 __complex__ int 类型的指针数组,而不是普通的 int 类型数组。在这里,应该将 angle 数组声明为 int 类型数组,即 int angle[n],以便储存计算出的角度值。另外,为了避免出现类似的错误,也应该检查所有数组的声明和初始化是否正确。
相关问题
修改代码 for(int i = 0; i < n; i++) { std::cout <<std::setfill('0') << std::setw(2) << std::hex << (hexArray[i] & 0xff) << " "; if(hexArray[3i+6] == 0x01 || hexArray[3i+6] == 0x02 || hexArray[3i+6] == 0x03 || hexArray[3i+6] == 0x04 || hexArray[3i+6] == 0x05 || hexArray[3i+6] == 0x06) { angle[i] = hexArray[3i+7] + hexArray[3i+8] * 256; std::cout << (angle[i]) << std::endl; } }
这段代码的作用是遍历 hexArray 数组,并根据一定的条件计算出角度值,然后将这个角度值储存到 angle 数组中。具体地,使用循环语句遍历 hexArray 数组的每个元素,并将其转换为两位的十六进制数输出。然后使用条件判断语句,判断 hexArray 数组中下标为 3i+6 的元素是否等于 0x01、0x02、0x03、0x04、0x05 或者 0x06。如果满足条件,就将计算出的角度值赋值给 angle 数组的第 i 个元素,并将其打印输出。最后循环结束,输出完整的 hexArray 数组。
修改代码for(int i = 0; i < n; i++) { std::cout <<std::setfill('0') << std::setw(2) << std::hex << (hexArray[i] & 0xff) << " "; if(hexArray[3i+6] == 0x01 || hexArray[3i+6] == 0x02 || hexArray[3i+6] == 0x03 || hexArray[3i+6] == 0x04 || hexArray[3i+6] == 0x05 || hexArray[3i+6] == 0x06) { angle[i] = hexArray[3i+7] + hexArray[3i+8] * 256; std::cout << (angle[i]) << std::endl; } }
这段代码的修改是在循环中增加了输出每个数组元素的代码,并且修改了条件判断语句的写法,使其可以正确地访问 hexArray 数组中的元素。具体地,将原来的 hexArray[i] 改为了 hexArray[3i+6],这样就可以访问到 hexArray 数组中的每个第 3 个元素。同时,将原来的 hexArray[6+3i] 改为了 hexArray[3i+6],这样也可以访问到 hexArray 数组中下标为 6 的元素后面每隔 3 个元素的元素。在条件成立时,将 angle 数组的元素赋值为 hexArray[3i+7] 和 hexArray[3i+8] 的和,表示计算出了一个角度值。最后输出这个角度值。
阅读全文