【发布时间】:2018-07-19 17:29:21
【问题描述】:
#include <stdio.h>
int main()
{
int a, b, c, d;
char *p = (char *)0;
int *q = (int *)0;
float *r = (float *)0;
double *s = 0;
a = (int) (p+1);
b = (int) (q+1);
c = (int) (r+1);
d = (int) (s+1);
printf("%d %d %d %d", a, b, c, d);
return 0;
}
当我运行它时,它会给出输出
1 4 4 8
从输出中我假设它给出了数据类型(char、int、float 和 double)的大小作为输出。但我不明白怎么做。有人可以解释一下这个程序。 (char *)0 是什么意思? (int)(p+1) 是做什么的?
提前致谢。
【问题讨论】:
-
即使它正在“工作”,它的行为也没有被 C 标准定义。无论如何,您可能想阅读指针算法。
-
获取C书。无法复制和粘贴
-
“但我不明白怎么做。” - 由于行为未定义,无意义的操作会在您的计算机和编译器上产生所谓的有意义的结果。