【发布时间】:2015-12-08 17:53:22
【问题描述】:
int k= "hello";
printf("%s", k);
为什么即使 k 的数据类型是整数,这个 hello 也会打印出来?
【问题讨论】:
-
实际上这会发出警告
initialization makes a integer out of pointer..这段代码是如何为您编译的?? -
@ThunderWiring 代码编译不会出错(假设没有
-Werror标志),只有警告。 -
我不知道怎么做。它在 CodeBlocks 和 Visual Studio 2013 上编译。
-
对,我正在使用 -Werror
-
代码很可能不会在 64 位平台上运行,因为当
"hello"的地址存储在k中时,该地址的高 32 位会丢失,因为k只有 32 位宽。