我想將一個unsigned int值複製到char [2]變量中。我認爲複製是直截了當的,因爲它們都具有相同的大小(16位)。這裏是我的代碼:C中變量之間的複製
#include <stdlib.h>
#include <stdio.h>
int main()
{
unsigned short a = 63488; //16 bit value which is 1111100000000000;
unsigned char* b = malloc(2);
*b = a;
printf("%d\n",b[0]); // I expect the lower part here which is 0
printf("%d\n",b[1]); // I expect the higher part here which is 11111000
return 0;
}
但我的結果顯示零值。我必須分別複製每個部分嗎?有沒有其他更簡單的方法來做到這一點?
謝謝
這假設您的平臺上的整數只有16位。今天這確實不是一個安全的假設。您應該期望大多數平臺至少實現32位整數。 –
@DavidHoelzer雖然你沒有做出平臺假設(請參閱我在回答中如何避免這一點),但請注意,他在每個平臺上都使用「short」,這是我可以想到的每個平臺上的16位。 –
啊,我沒有真正注意到這個短。我剛纔在問題中看到了「unsigned int」。 :) –