Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 添加32位对齐的值会导致32位对齐吗?_C_Alignment - Fatal编程技术网

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

C 添加32位对齐的值会导致32位对齐吗?,c,alignment,C,Alignment,添加32位对齐的值会产生32位对齐的值,这样说是否正确?假设一个32位对齐的数字将有2个小位设置为0,我会说是的。值不对齐,变量不对齐 但如果添加两个32位宽的整数类型,则得到的表达式也将是32位的。确切的类型取决于操作数的实际类型 如果您的意思是表示32位对齐的地址的两个值是否会产生相同的结果,那么答案是肯定的,假设每个字节8位 该值可被4整除,因此其形式为4*x。因此,如果您有两个这样的值,那么将它们相加将得到4*a+4*b==4*(a+b)。所以结果也可以被4整除 但是请注意,添加两个指针

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

值不对齐,变量不对齐

但如果添加两个32位宽的整数类型,则得到的表达式也将是32位的。确切的类型取决于操作数的实际类型

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

该值可被4整除,因此其形式为
4*x
。因此,如果您有两个这样的值,那么将它们相加将得到
4*a+4*b==4*(a+b)
。所以结果也可以被4整除


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

运算符
+
不会生成内存对象,因此没有必要讨论结果对齐

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


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

假设您指的是32位对齐的地址

如果整数变量addrA包含32位对齐地址,则表示位0和1设置为0。如果
addrB
的情况也是如此,那么不管高位是多少,结果加法也会将位0和1设置为0

所以,对你的意思做一些假设,是的,添加这两个32位对齐的地址总是会得到一个32位对齐的地址


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

您可能已经抓住了OP的意图,但不能在C中添加指针。(指针+整数,是的,但不是两个指针)。如果可能,有人能告诉我们对齐的值吗?如果阳光普照,阳光普照吗?不清楚你到底问了什么。一个值没有对齐。@马克,我建议修改你的问题,即使有四个答案假设了你的意图。纠正这个问题会让以后遇到这个问题的人明白。什么是存储对齐?rondino,存储块的基本特征是它的(起始)地址和大小。如果一个存储器的地址(以位为单位)是32的倍数,则该存储器在32位边界上对齐。然而,通常情况下,我们用8位单位表示地址和计数,标准是地址是4的倍数。你的数学比我的更有意义。我处理比特的时间太长了,以至于有时我忽略了表示同一事物的更简单的算法。