C语言问题: \t 的奇怪表现

来源:百度知道 编辑:UC知道 时间:2024/06/19 22:47:52
为了了解 \t 的具体用法,我编辑了以下代码:
#include"stdio.h"
main()
{clrscr();
printf("0000000\t0");
printf("\n0 0"); /*两个0之间有7个空格*/
}
第一次运行,输出:
0000000 0
0 0
然后我按键盘Esc,然后第二次运行,奇怪的想象出现了,输出为:
0000000 0
0 0
其中,上面两个0之间不知道有多少个空格。。。我尝试用同样的方法找出上面那行两个0之间的空格数,但是。。。在TurboC上直接修改代码:
#include"stdio.h"
main()
{clrscr();
printf("0000000\t0");
printf("\n0 0 0"); /*前面两个0之间有7个空格,后面两个0之间有6个空格*/
}
不保存,第一次运行,输出:
0000000 0
0 0 0
我傻眼了。。。再按Esc,再次运行,输出:
0000000 0
0 0 0
- -b我疯了。。。
然后我以为是未保存导致的出错,我退出TC,重新编辑一个C源代码(也就是直接在TC里修改后的代码,没有任何变化),同样出现上面的情况。。。
各位学习过C的可以试试,不过请严格按照我的步骤来操作,看看是否会出现这样奇怪的现象。不知道各位有没有也遇到过相同的情况。。。请问一下,为什么会出现运行结果不一样的想象???我在TurboC2.0和TurboC3.0下都测试过了,均出现同样的问题。
十分不解。。。望各位一起研究解答。。。。
20分不多,反正是一起研究的,意思意思就好了。。。
如无意外,我的设置是8个字符

不是TC的问题,是你对tab符号的理解有问题。

如果你的制表符的设置是4个字符宽度,那么如果一行的前面已经有三个空格,后面的这个制表符占据的宽度是一个字符宽度,如果前面是2个空格,制表符占据的是2个字符宽度。。。。也就是说,制表符的作用是把当前行占用的字符宽度填充到4的倍数。

如果是8个字符宽度,依此类推。。。

不清楚

e