【发布时间】:2019-06-23 05:45:02
【问题描述】:
当我尝试 printf("%p","%d","%u",ptr,ptr,ptr) 我得到 00405067 但是当我尝试执行 printf("%p %d %u",ptr, ptr,ptr) 我分别得到 0061FF28 6422312 6422312。后半部分我懂,但前半部分不太清楚。
int main()
{
int a = 1;
int *ptr;
ptr = &a;
printf("%p","%d","%u",ptr,ptr,ptr);
return 0;
}
Output: 00405067
________________
int main()
{
int a = 1;
int *ptr;
ptr = &a;
printf("%p %d %u",ptr,ptr,ptr);
return 0;
}
Output: 0061FF28 6422312 6422312
【问题讨论】:
-
前者从何而来?这是完全错误的。
-
第一个参数是决定打印什么的格式字符串。一个告诉 printf 打印一个值另外三个。
-
我使用代码块,这就是我得到的:/
-
它们都是未定义的行为,所以技术上是一样的