我编写了这段 C 代码,并在 Windows 8.1 中的 GNU GCC 和 TURBO C 编译器中进行了编译。该代码具有大小为 20 的 float 组,并使用 for 循环打印该数组,并将“\t”字符放入 printf() 函数中以用于间隔目的。 在 20 次的整个循环中,'\t' 应该打印相等的空格,但它只为 a[i] 0 到 10 的值打印 2 个空格,并且在剩余执行中打印常规空格。 我不明白为什么会发生这种情况。这是由于我在打印 float 变量后使用而发生的吗?
代码C代码如下所示:
#define n 20
int main()
{
float a[n]={0.1,0.9,0.23,0.8,0.32,0.57,0.4,0.14,0.25,0.11,0.7,0.86,0.75,0.19, 0.55,0.95,0.34,0.29,0.64,0.45},ex,temp,x;
int i,idx;
system("cls");
/*for(i=0 ; i<n ; i++)
{
printf("a[%d]: %f\t",i,a[i]);
}*/
for(i=0 ; i<n ; i++)
{
x=a[i];
idx=a[i]*10;
printf("\na[%d]: %f \t idx: %d",i,a[i],idx);
//printf("\na[%d]: %f *\t idx: %d",i,a[i],idx);
}
getch();
return 0;
}
O/p的图片如下:
根据图像中所示的 o/p,红线区域的空间小于蓝线区域。这怎么可能?这是什么原因呢?
最佳答案
\t
只是一个字符。你的终端将决定如何处理它,通常这意味着“移动到下一个制表位位置”,一个常见的约定是每 8 列有一个这样的位置。您无法在程序中控制终端将用它做什么。
如果您想控制输出格式,请改用 printf()
提供的功能。转换允许指定字段宽度和精度,使用它们,请参见此处的示例:http://www.cprogramming.com/tutorial/printf-format-strings.html
关于c - 数组中同一 printf() 函数中的“\t”字符空间差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31242304/