2015-09-20 43 views
1

有人能告訴我,我是否正確執行了以下程序?它應該打印Little或Big,具體取決於機器是小端還是大端。Little Endian和Big endian c程序

#include <stdio.h> 

int main() 
{ 
    int x = 1; 

    unsigned char *c = (char*)&x; 

    if (*c) 
     printf("Little"); 
    else 
     printf("Big"); 

    return 0; 
} 
+0

我看不錯,但你可能意味着強制轉換爲'無符號字符*'。 –

+0

你能解釋一下哈哈對不起,我對C不太好! @VaughnCato – luluu95

+5

我正在投票結束這個問題作爲題外話,因爲它屬於codereview – tinlyx

回答

3

的代碼幾乎是正確的:

  • 你應該投&x(unsigned char*)&x
  • 你應該printf'\n'LittleBig之後。

進一步的工作:

  • 你可以通過擺脫c簡化代碼。
  • 使它更簡單:擺脫if並使用三元運算符。
1

我的筆記本是「小」:

#include <stdio.h> 

int main(){ 
    int x = 1; 

    unsigned char *c = (unsigned char*) &x; 
    printf((*c) ? "Little\n" : "Big\n"); 

    return 0; 
}