添加32位对齐值会导致32位对齐吗?

时间:2016-08-11 19:12:21

标签: c alignment

说添加32位对齐值会产生32位对齐是否正确?假设一个32位对齐的数字将2个次要位设置为0,我会说是。

4 个答案:

答案 0 :(得分:3)

“值”未对齐,变量为。

但是如果添加两个32位宽的整数类型,结果表达式也将是32位。具体类型取决于操作数的实际类型。

如果你的意思是表示具有32位对齐的地址的两个值是否会产生相同的结果,那么答案是肯定的,假设每个字节有8位。

这样的值可以被4整除,因此它的格式为4*x。因此,如果您有两个这样的值,添加它们会为您提供4*a + 4*b == 4*(a+b)。所以结果也可以被4整除。

但请注意,添加两个指针是不合法的。但是,您可以向指针添加整数值。

答案 1 :(得分:2)

  

说添加32位对齐值会产生32位对齐是否正确?假设一个32位对齐的数字将2个次要位设置为0,我会说是。

不,这是不正确的,因为对齐是存储的特征,而不是值。

答案 2 :(得分:2)

假设您的意思是32位对齐的地址......

如果整数变量addrA包含32位对齐的地址,则表示位0和1设置为0.如果addrB的情况相同,那么结果加法,无论是高位,也将位0和1设置为0。

因此,对你的意思做出一些假设,是的,添加这两个32位对齐的地址将始终产生一个32位对齐的地址。

另外,由于我假设你指的是地址,另外要考虑的是如果你在指针上操作,就不能添加两个指针。如果一个是指针而一个是整数,那么将使用pointer arithmetic

答案 3 :(得分:0)

运算符+不会产生内存对象,没有必要谈论结果对齐。