【发布时间】:2019-04-04 09:05:21
【问题描述】:
我有这段代码:
int a;
char *x;
x = (char *) &a;
a = 512;
x[0] = 1;
x[1] = 2;
printf("%d\n");
return 0;
这会打印 513。请解释一下,尤其是第 3 行。
【问题讨论】:
-
这是展示undefined behavior 的好方法。
printf电话真的正确吗? -
no - 它生成一个编译器警告 - main.c: In function 'main': main.c:11:12: warning: format '%d' 需要一个匹配的 'int' 参数 [- Wformat=] printf("%d\n");
-
x = (char *) &a;将整数指针转换为 char 指针 - 至于它的作用,你的猜测和我的一样好?