回覆列表
  • 1 # 使用者3519891404610

    建議題主先了解一下“位元組序”的概念。然後大概解釋一下:在記憶體中,如果一個數值必須用超過一個位元組的記憶體來儲存它,那麼可能有兩種方式:假設有4位元組變數a = 0x12345678a的記憶體地址是0x100000那麼記憶體中a的儲存方式可能是:

    也可能是第一種被稱為小端(Little-Endian),低為位元組儲存在低地址上,其中在x86平臺上(Intel/AMD CPU)都是這種格式儲存資料;第二種被稱為大端(Big-Endian),又叫網路位元組序,網路傳輸(比如TCP報文頭)都是以這種方式儲存的。需要明確說明的是,二者沒有絕對的好與壞,選擇哪種方式有很多都是歷史原因。看完這個,來切入正題:如果在x86平臺上,c的值等於0x78,又因為0x78儲存在變數a的記憶體空間的低位元組上,所以賦值實際上是取的變數a的第一個位元組(低地址)如果是在大端的硬體上,c的只仍然是0x78,但在大端的硬體上0x78儲存在最後一個位元組裡(高地址)。所以,具體賦值是那邊的,是要看硬體情況的。當然編譯器會根據你選擇的硬體平臺生成正確的程式碼,保證c永遠是變數a數學上的最低8位。但在硬體上,則需要根據實際情況判斷。-----------------------另外,如果是memcpy的這種複製(注意是複製,不是賦值)方式,那麼永遠是以低地址為起點進行復制的。

  • 2 # 使用者7305050034042

    1.整型值賦值給整型陣列:

    int value=2;//定義一個變數,並賦值

    int array[10];//定義一個數組

    array[0]=value;//將變數值賦值給該陣列。

    2.整型值賦值給字元陣列:

    int value=3;

    char str[10];

    str[0]=value+"0";//賦值給單個字元

    itoa(value,str,10);//數字轉字串函式itoa,10代表十進位制。要包含標頭檔案

    3.字元賦值給整型陣列

    char ch;

    int array[10];

    array[0]=atoi(ch);

    僅舉上例。

  • 中秋節和大豐收的關聯?
  • 埃及豔后是如何對待自己的妹妹和弟弟們的?