Let L and B是两台机器。L订购它的bits从最低有效位
(最低有效位)到 MSB(最高有效位),同时B命令
从 MSB 到 LSB。或者,换句话说,L使用 Little Endian 而B使用大尾数法bit- 不要与字节排序相混淆。
问题1SOLVED:
我们正在编写以下我们希望可移植的代码:
#include <stdio.h>
int main()
{
unsigned char a = 1;
a <<= 1;
printf("a = %d\n", (int) a);
return 0;
}
on L,它会打印 2,但是会发生什么B?是否会改变
1 输出并打印 0?
解决方案:6.5.7 中的 C99 定义表明,至少在
无符号整数类型,<<
and >>
将乘以或除以 2
分别。
问题2:
我们正在编写以下我们希望可移植的代码:
阅读程序:
/* program READ */
#include <stdio.h>
int main()
{
FILE* fp;
unsigned char a;
fp = fopen("data.dat", "rb");
fread(&a, 1, 1, fp);
fclose(fp);
return 0;
}
并编写程序:
/* program WRITE */
#include <stdio.h>
int main()
{
FILE* fp;
unsigned char a = 1;
fp = fopen("data.dat", "wb");
fwrite(&a, 1, 1, fp);
fclose(fp);
return 0;
}
如果我们运行 WRITE 会发生什么L,将数据文件移动到B和
在那里运行 READ?如果我们运行 WRITEB然后继续阅读L?
抱歉,如果这是常见问题解答。我用谷歌搜索了几个小时但没有运气。