首页 > 解决方案 > 使用 Printf 在 C 中的歧义

问题描述

为什么C语言会这样

#include <stdio.h> 
#include <stdlib.h> 
int main()
{
 const int size = 3;
 double a[size];
 for(int n=0; n<size; ++n){
   a[n] = n;
   printf("%d,%d\n",n,n+1);
 }
}

输出是

0,1 
1,2 
2,3

但是当我这样做时

#include <stdio.h> 
#include <stdlib.h> 
int main()
{
 const int size = 3;
 double a[size];
 for(int n=0; n<size; ++n){
   a[n] = n;
   printf("%d,%d\n",a[n],n+1); //change is here
 }
}

输出是:

1,1
2,2
3,3

为什么值只是通过替换n而改变,a[n]哪些是相同的?

标签: c

解决方案


a[n]是双精度的,你不能用 %d printf


推荐阅读