【发布时间】:2017-04-03 21:53:11
【问题描述】:
此代码将打印 my_age 和我的年龄的内存地址。
#include <stdio.h>
#include <stdlib.h>
int main(){
int my_age = 24;
printf("%d \t %p",my_age, &my_age);
}
但是当我使用 %d 而不是 %p 时,它会打印一个不同的值,那个值是什么??
#include <stdio.h>
#include <stdlib.h>
int main(){
int my_age = 24;
printf("%d \t %d",my_age, &my_age);
}
【问题讨论】:
-
%p 是指针地址的说明符
-
如果您使用了错误的格式说明符,则会调用 ub。你的程序实际上可以做到anything
-
你的编译器应该给出警告!如果没有,请使用另一个!
-
printf("%d \t %p",my_age, &my_age);应该是printf("%d \t %p",my_age, (void*)&my_age);但是问为什么豆子不是胡萝卜是无稽之谈。也许你有 32 位int和 64 位int*。 -
当您使用不同的格式说明符时,您是否期望打印相同的结果?我无法想象你为什么会这样做。
标签: c