#include <stdio.h>
//Compiler version gcc 6.3.0
int main(void)
{
int a=10;
printf("%d"+1,a);
return 0;
}
输出。 --- d
#include <stdio.h>
//Compiler version gcc 6.3.0
int main(void)
{
#include <stdio.h>
//Compiler version gcc 6.3.0
int main(void)
{
int a=10;
printf("%d"+36,a);
return 0;
}
输出。 --- p
解释为什么会发生这种情况......每当我改变+1的值时,它会打印出不同的输出......
答案 0 :(得分:5)
代码的行为未定义。
"%d"+1
实际上是在const char*
指针中添加1(文字"%d"
会在某些情况下衰减为const char*
指针),实际上会将您带到{ {1}}在该字符串文字中!因此d
格式化程序不适合您的参数。
printf
确实会做一些非常糟糕的事情,因为你从"%d"+36
你的意思不是"%d"
&amp; c。?
最后,平均值是printf("%d", a + 1);
?你的意思不是Int
?