gpt4 book ai didi

c++ - 错误 : expression must have pointer-to-object type

转载 作者:行者123 更新时间:2023-11-28 02:58:43 25 4
gpt4 key购买 nike

我试图设计一个程序,它将返回原始 32 位值 w,但将数字 i 元素更改为 1。这是我到目前为止的功能。但是对于这部分 v[i]=1; ,它只是说对于 i 表达式必须有指向对象类型的指针。

 unsigned int setBit(unsigned int w,unsigned int i)
{
unsigned int v = w;
v[i]=1;
return v;
}

最佳答案

unsigned int v = w;
v[i] = 1; // error, v is not an array

这是不正确的,因为 v不是数组。解决方案可能是使用 std::bitset或者简单地移动位并使用一些位操作 - 这会更快。

unsigned int setBit(unsigned int w,unsigned int i) {
unsigned int v = ( w |= 1 << i);
return v;
}

用法:

int main(int argc, char *argv[])
{
unsigned int in = 0;
unsigned int res = setBit(in,1); // set 1st bit in 0 to 1, results in 2
return 0;
}

unsigned int v = ( w |= 1 << i);的含义

| - the bitwise OR

<< - the bitwise shift

v = ( w |= 1 << i)v = ( w = w | 1 << i)相同所以这意味着:v等于(将 wOR1 左移 i ,并将其分配给 w )

about C/C++ bit manipulation

关于c++ - 错误 : expression must have pointer-to-object type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21421478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com