繁体   English   中英

如果我将unsigned int分配给signed int,可以有单位化的位吗

[英]Can there be unitialized bits if I assign unsigned int to signed int

我有一个无符号整数(例如32位),当我将其分配给一个有符号整数时,转换后是否可以在有符号整数中保留未初始化的位。

unsigned int i = 10 
int j = i;

我从valgrind得到一个错误,说在观察到未初始化的字节

int func(long,int,int);

我在第三个参数中看到一个无符号的int传递给此函数。 我怀疑这种无符号转换会导致此valgrind错误

分配变量时,是在右侧分配 ,而不是右侧的对象表示形式 因此,在分配变量后,永远不会有未初始化的位(或字节)。

另外,由于字节是最小的可寻址单位,因此不能仅将值分配给字节中的某些位。 全部或全无。

如果通过char *memcpy完成,则只能分配给变量的特定字节。 例如:

unsigned char c[] = { 1, 2 };
int j;
memcpy(&j, c, sizeof(c));

假设一个int是4个字节,那么只有j的前2个字节被写入,而后2个未初始化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM