【发布时间】:2019-04-12 06:27:33
【问题描述】:
我在 ARM (iMX6) 和 intel 64 位上运行这个 sn-p 代码:
#include <stdio.h>
int main()
{
int i = EOF;
char d = i;
printf("i = %d, d = %d\n", i, d);
if (i == EOF)
printf ("i is EOF\n");
if (d == EOF)
printf ("d is EOF\n");
return 0;
}
在这两种情况下,我都使用 gcc 5.4 编译它: ARM:gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609 x86_64: gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
但是,结果却大不相同:
手臂:
i = -1, d = 255
i is EOF
x86_64:
i = -1, d = -1
i is EOF
d is EOF
为什么会这样?
【问题讨论】:
标签: casting char int variable-assignment eof