我已经编写了这个C代码,并在Windows 8.1中的GNU GCC和TURBO C编译器中编译。代码具有大小为20的浮点数组,并使用for循环和' \ t'打印数组。将printf()函数放入for循环中的字符用于间隔目的。 在整个循环中20次' \ t'应该打印相等的空格,但它只打印2个空格,用于a [i] 0到10的值和剩余执行中的regalr空间。 我不明白为什么会这样。是否因为我在打印浮点变量后使用它?
代码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,红色区域中的空间小于蓝色区域。这怎么可能?它是什么原因?
答案 0 :(得分:4)
\t
只是一个角色。您的终端将决定如何处理它,通常它意味着&#34;转到下一个标签停止位置&#34;,一个常见的惯例是每8列有这样一个位置。您无法在程序中控制您的终端将使用它做什么。
如果要控制输出格式,请改用printf()
提供的功能。转换允许指定字段宽度和精度,使用这些,请参见此处:http://www.cprogramming.com/tutorial/printf-format-strings.html
答案 1 :(得分:3)
没有&#39; \ t&#39;是TAB的转义序列。
并且TAB&#34;将活动位置移动到当前行上的下一个水平制表位置&#34;。
因此,它不会打印相等的空格,而只是将光标移动到当前行的下一个制表位置。
答案 2 :(得分:2)
您可能在制表符空间和填充之间感到困惑。选项卡空格(假设值为8)在屏幕上的6个字符后将留下2个字符的空格,而在8个字符后,将连续的8个空格留空。填充允许我们根据需要对齐要在屏幕上打印的数据。您的问题的可能(和临时)解决方案是:删除printf语句中/ t之后的空格。我希望它有效