void main()
{
printf("Adi%d"+2,3);
}
output = i3
这个printf声明有效,但该声明如何运作?
答案 0 :(得分:8)
printf("Adi%d"+2,3);
"Adi%d"
- 被解释为存储字符串文字"Adi%d"
的内存地址的开头。当你向它添加2时,它变成了存储字符串"i%d"
的内存地址。所以基本上你传递给printf字符串:"i%d"
。然后%d
和printf
开始播放,将%d
替换为3,因此输出i3
。
答案 1 :(得分:1)
它是指向字符的指针的一部分,与printf无关,feof
将使其从位置"Adi" + 2
读取0 + 2 = 2
i