我有一个 C
代码,它在 Solaris
机器上运行良好,但相同的代码有时会出现段错误,有时会产生不同的输出。
以下是我在两台机器上获得差异的部分:
FILE *inf;
unsigned char *ptr;
unsigned short *ds;
int n, s;
char work[100];
inf = (FILE *) fopen("Filename", "r");
s = fseek(inf, 0, SEEK_SET);
n = fread(work, 1, sizeof(work), inf);
ptr = (unsigned char *)work;
ptr += 8;
count = 0;
ds = (unsigned short *) ptr;
count = *ds;
当我打印 count 的值时,它在 Solaris
机器上是 15
而在 Linux
机器上是 768
.
请建议我在 Linux 机器上对代码进行更改。
最佳答案
我不认为(只是)字节顺序。 15 = 0x000F。 768 = 0x0300。不过,这可能与 char 的大小有关。尝试在两台机器上打印 CHAR_BIT,看看会得到什么。
关于c - 为什么代码在 Solaris 上可以运行,但在 Linux 上却不行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18273144/