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;
}
}
此代码将输出显示为:Garbage值。怎么样和为什么?
答案 0 :(得分:0)
printf()
函数返回一个整数。成功后,返回值是写入的字符数。如果出错,返回值为负。
因为printf("%d")
(printf("%d",printf("%d"))
的内部一个)将首先被执行,所以它很可能会显示一个内存位置的随机值。之后printf("%d",printf("%d"))
将打印上次调用期间写入的值的数量。
示例:123456789010