我在 c 编程方面有比较好的经验。它一直是我最喜欢的语言之一。今天在学习 shell 编程时,偶然发现了我在 Linux 系统上执行的 ac 程序(Backtrack 5 r2)。该程序有一个奇怪的输出,我真的想不通。
这是代码...
#include <stdio.h>
int main(int argc, char *argv[])
{
char array[] = { 0x25, 115, 0 };
char array2[] = { 68, 0x61, 118, 0x69, 0144, 040,
0107, 97, 0x74, 119, 0157, 0x6f,
100, 0x20, 0x72, 117, 'l', 0x65,
115, 041, 012, 0 };
printf(array, array2);
}
使用 gcc 编译此代码并在执行时得到输出为
大卫盖特伍德规则!
无法真正理解我是如何以及为什么得到这个输出的。据我所知,将数组的名称传递给“printf”只会打印数组的基地址,即数组第 0 个元素的地址。只有在“printf”语句中使用了正确的格式说明符时,它才会正确显示。
那么我哪里出错了,或者我忽略了一些重要的事情,还是因为 gcc?