【发布时间】:2021-04-15 01:48:17
【问题描述】:
我正在尝试在 if else 块中声明和初始化一个 unsigned char arr,但我看到“无法在赋值中将 '' 转换为 'unsigned char'”错误。谁能帮我理解这有什么问题?我是 C++ 新手。
已编辑:
unsigned char arr[4];
if (..){
arr[4] = {0x0F, 0x0F, 0x0F, 0x0F};
} else {
arr[4] = {0xFF, 0xFF, 0xFF, 0xFF};
}
走下面的路没有任何问题。但是我需要在 if-else 中进行分配,所以我想了解上面的 sn-p 有什么问题?
unsigned char arr[4] = {0xFF, 0xFF, 0xFF, 0xFF};
【问题讨论】:
-
一方面,那是
unsigned而不是usigned,然后值周围的大括号是错误的。 -
OT:
arr[8] = {0XCF};越界。法定指数为 0 .. 7 -
您可能想使用
std::array<uint8_t,8> arr;而不是unsigned char arr[8]; -
转换为 unsigned char 是你的程序中最少的,在这里。
char arr[8]={ ... }是声明和初始化。但是arr[8]=something,无论“...”为数组的第九个元素赋值,就像arr[0]=something为数组中的第一个元素赋值一样。当然,问题在于八元素数组中没有第九个元素。任何这样做的尝试都会导致demons flying out of your nose。如果你不想让恶魔从你的鼻子里飞出来,你不应该这样做。 -
在声明变量 (
arr) 之后,您对它所做的任何其他操作都不再是初始化。
标签: c++ arrays char initializer list-initialization