为什么第一个不起作用?

时间:2016-08-02 12:22:58

标签: c

#include "stdio.h"
int main()
{
    int toes = 10;
    printf("toes=%d\t2toes=%d\ttoes2=%d\n",toes,toes+toes,toes*toes);
    return 0;
}

//这是来自c primer plus的练习。编译并运行后,只有第二个工作。

4 个答案:

答案 0 :(得分:6)

对我来说很好。 (example

输出:

toes=10 2toes=20        toes2=100

请注意,\t表示" 制表",或者换句话说填充到 N 位置的最近倍数,其中 N 通常为8。

toes=10占用7个字符,因此要达到8的下一个倍数,则需要打印1个空格。

答案 1 :(得分:2)

选项卡将文本缩进到固定位置。这意味着,它们不会形成4个空格的间隙,但会在匹配下一个标记位置之前形成间隙。

toes=10 2toes=20        toes2=100
1234567812345678123456781234567812345678

这是一个不吉利的例子。你的标签是8长。所以他们每8个字母停止一次。如果您在第一个\t之前添加了一个空格,那么您的标签会产生更大的差距。

通过以下方式实现更好的输出格式:

printf("%s%s%s\n", " single", " double", " square");
printf("%7d%7d%7d\n", toes, 2*toes, toes*toes);

输出:

 single double square                                                                                                                                                                                                                                  
     10     20    100

答案 2 :(得分:1)

它正在工作,但似乎不是!!!

这是因为默认情况下您的tabspace等于8 spacestoes=10占用7个空格,只留下1空格,以便\t填充。

要查看它是否有效,请将printf更改为:

printf("ts=%d\t2toes=%d\ttoes2=%d\n",toes,toes+toes,toes*toes);

答案 3 :(得分:0)

\t字符不会占用相同的空格,它会调整为列。

如果您想在条目之间添加固定数量的空格,请在您的值之间手动输入。