尽管使用double
作为数据类型和正确的格式说明符,但输出不会打印正确的变量地址输出仅由零组成
#include <stdio.h>
void main() {
double a[5] = { 6.0, 7.0, 8.0, 9.0, 10.0 };
double *p;
p = a;
printf("%lf \n", p);
for (int i = 0; i < 5; i++) {
printf("%lf \n", p++);
}
}
输出:
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
3条答案
按热度按时间ljsrvy3e1#
我修复了它与2个简单的变化,在评论中描述.
输出
qij5mzcb2#
printf
的这些调用以及
调用未定义的行为,因为对指针使用了错误的转换说明符
"%lf"
(顺便说一句,长度修饰符即使用于double
类型的对象也不起作用)。您可以使用转换说明符
%p
,例如以及
或者,如果要将地址输出为整数,则可以包含标头
<stdint.h>
和<inttypes.h>
(最后一个标头已经包含了第一个标头,并写入包括#包括<stdint.h> #include <inttypes.h>
//...
以及
注意,根据C标准,不带参数的函数main应声明为
这是一个演示程序。
程序输出为
wnvonmuf3#
也许可以像这样打印for循环:
输出:0.000000
6.000000
7.000000
8.000000
9.000000
10.000000