c - 使用 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]
哪些是相同的?
解决方案
a[n]
是双精度的,你不能用 %d printf