操作未赋值给变量的结果
Result of operation not being assigned to variable?
我在c++中有一个奇怪的问题,我肯定我错过了一些明显的东西,但不能弄清楚是什么
函数的作用是设置变量的一些位。从我的测试,这一切似乎都工作,但它看起来像操作的结果没有分配回变量。
uint16_t setBits(uint16_t target, unsigned int source, int offset, int bitCount) {
unsigned int mask = ~0;
mask = mask >> ((sizeof(mask) * 8) - bitCount);
int rightShift = (sizeof(mask) * 8 - bitCount - offset);
mask = mask << rightShift;
source = source << rightShift;
printHex(target);
printHex((target & ~mask) | (source & mask));
target = (target & ~mask) | (source & mask);
printHex(target);
return target;
}
uint16_t group;
group = 0xabcd;
unsigned int source = 0x12;
group = setBits(group, source, 4, 8);
这将打印:
0x0000abcd
0x0120abcd
0x0000abcd
这对我来说意味着(target & ~mask) | (source & mask)
给出了正确的结果(0x0120abcd),但是这个结果没有分配回target
(仍然设置为0x0000abcd)。知道我哪里做错了吗?
看target
的类型:
uint16_t target
它只有16位,但是你试图用比16位更大的位掩码
相关文章:
- 你好。。。id_public变量不应该给出结果为 81 和 86 吗?为什么它为两个派生类占用不同的内存位置?
- 算术运算的结果类似于:C浮点变量中的1/3
- C++ SSE 内部函数:将结果存储在变量中
- 按值传递变量与按引用传递变量具有相同的结果
- 为什么我可以改变常量对象中的成员变量,这是返回常量对象函数的结果?
- 调用一个小函数两次(例如在if条件和主体中)比将结果存储在局部变量中更可取
- 为什么使用 SPI 时,全局缓冲区变量产生的结果与局部缓冲区变量不同
- 带有大结构变量的 CUDA 内核函数给出了错误的结果
- 如果我将索引变量更改为零,并且合并函数中的k = 0,则获得合并排序的错误结果
- 整数变量与整数字面变化的乘法结果
- 如果结果存储在变量中forward_as_tuple然后在 std::apply 中使用之前丢失右值引用
- 使用变量和常量的结果在 c++ 中并不相同
- 是否可以将类成员变量设置为类函数的结果?
- 为什么总和变量的结果= 1
- 对条件表达式结果的赋值(其中第二个和第三个操作数是相同类型和值类别的变量)是否仍然存在?
- 如何使变量始终等于某些计算的结果
- 当变量的顺序发生变化时C++双倍乘法会产生不同的结果
- TLS变量访问的结果未缓存
- 用名称为“ this”内部括号内的变量在3个不同的编译器上导致不同的结果
- 从返回类型的函数中获取结果'void'而结果变量是输入参数之一 - C++