C 编译器警告:在赋值时将整数转换为指针

C 编译器警告:在赋值时将整数转换为指针,c,pointers,compiler-warnings,C,Pointers,Compiler Warnings,我正在做以下工作: static uint32 myReadValue; static uint32 myNewValue; DoRead(10, &myReadValue); myNewValue = (uint32)(&myReadValue) | (3 << 8); 编译器向我提供以下消息: "conversion of integer to pointer at assignment" on the assignment of &qu

我正在做以下工作:

static uint32 myReadValue;
static uint32 myNewValue;

DoRead(10, &myReadValue);

myNewValue = (uint32)(&myReadValue) | (3 << 8);
编译器向我提供以下消息:

"conversion of integer to pointer at assignment" on the assignment of "myNewValue" 
我看不出我到底做错了什么。 有什么想法吗?

(uint32)(&myReadValue)
是指向
myReadValue
的指针到
uint32
的转换,而不是相反的方式,并且这种转换不会在赋值时发生。。。有些事你没有告诉我们。生成问题的可编译后代码

不管怎么说,演员阵容是无用的,你可能应该用这个来代替:

myNewValue = myReadValue | (3 << 8);

myNewValue=myReadValue |(3哦,正确。抱歉,基本上问题出在变量声明上。它们最初位于结构内部,与我在本例中提到的不同。这导致了我的误解。
(uint32)(&myReadValue)到底是什么
赋值时整数到指针的转换?这是通过强制转换从指针到整数的转换。明智的编译器会警告强制转换为可能太小而无法保存指针地址的整数类型,但不会提示问题中出现的错误。因此,这并不能回答问题(这可能无法以当前形式回答)。@Lundin:我同意警告令人困惑,可能涉及其他代码。有一个转换,但从指针到整数,还有一个赋值,但在计算算术运算符之后……所以这个警告要么不相关,要么被误传。
myNewValue = myReadValue | (3 << 8);