需要发生以下输出的原因
问题描述:
main(){
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf("%d %d",*(a+1),*(ptr-1));
}
此代码的输出结果是:2 5。 我明白为什么2,但是为什么5会来*(ptr-1)?需要发生以下输出的原因
此外,
main(){
while(1)
{
if(printf("%d",printf("%d")))
break;
else
continue;
}
}
此代码是示出输出为:垃圾值。如何和为什么?
答
printf()
函数返回一个整数。成功后,返回值是写入的字符数。错误时,返回值为负值。
由于printf("%d")
(内部的printf("%d",printf("%d"))
)将首先执行,它很可能会显示一些随机值的内存位置。之后,printf("%d",printf("%d"))
将打印上次调用期间写入的值的数量。
示例:123456789010
请坚持每个堆栈溢出文章中的一个主题。你的第二个例子与第一个完全无关。 – 2014-10-26 16:01:38