2015-09-20 30 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; 
}