C 需要以下输出发生的原因

C 需要以下输出发生的原因,c,C,这段代码的输出结果是:25。 我明白为什么2,但为什么5来找*(ptr-1) 而且 main(){ int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d %d",*(a+1),*(ptr-1)); } 此代码将输出显示为:垃圾值。如何以及为什么?printf()函数返回一个整数。成功后,返回值为写入的字符数。错误时,返回值为负值 由于将首先执行printf(“%d”)(内部的printf(“%d”),prin

这段代码的输出结果是:25。 我明白为什么2,但为什么5来找*(ptr-1)

而且

 main(){
   int a[5]={1,2,3,4,5};
   int *ptr=(int *)(&a+1);
  printf("%d %d",*(a+1),*(ptr-1));
}
此代码将输出显示为:垃圾值。如何以及为什么?

printf()
函数返回一个整数。成功后,返回值为写入的字符数。错误时,返回值为负值

由于将首先执行
printf(“%d”)
(内部的
printf(“%d”),printf(“%d”)
),因此它很可能会显示内存位置的一些随机值。之后,
printf(“%d”,printf(“%d”)
将打印上一次调用期间写入的值的数量


示例:12345678910

请在每个堆栈溢出帖子中坚持一个主题。你的第二个例子与第一个完全无关。
  main(){
   while(1)
   {
     if(printf("%d",printf("%d")))
        break;
     else
        continue;
   }
  }