printf语句如何在下面的代码中工作?

时间:2016-09-08 06:32:20

标签: c

void main()
{
printf("Adi%d"+2,3);
}

output = i3

这个printf声明有效,但该声明如何运作?

2 个答案:

答案 0 :(得分:8)

printf("Adi%d"+2,3);

"Adi%d" - 被解释为存储字符串文字"Adi%d"的内存地址的开头。当你向它添加2时,它变成了存储字符串"i%d"的内存地址。所以基本上你传递给printf字符串:"i%d"。然后%dprintf开始播放,将%d替换为3,因此输出i3

答案 1 :(得分:1)

它是指向字符的指针的一部分,与printf无关,feof将使其从位置"Adi" + 2读取0 + 2 = 2

i