
关于C语言的问题
#include<stdio.h>voidmain(){charc1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;printf("a%cb...
#include <stdio.h>
void main()
{ char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;
printf("a%c b%c\tc%c\tabc\n",c1,c2,c3);
printf("\t\b%c %c\n",c4,c5);
}
书上说Turbo C的运行效果如下所示,
aa bb cc abc
AN
\t是转义字符,功能是跳到下一个制表位置,一个制表区占8个字符,所以光标定位到第九个字符位置上,然后打印出cc,又一个\t,又跳到下一个制表位置,即跳到第17个字符位置处,然后打印abc,\n作用是换行,第二个 printf("\t\b%c %c\n",c4,c5);\t执行后,光标定位到第九个字符位置,\b,退一个字符格,光标定位到第八个字符位置上,然后打印A N(即,c4,c5的值),最后执行\n,换行,结果光标在第三行上。
VC++6.0运行结果:
aa bb cc abc
AN
但是现在如果你用viusal c++6.0软件运行效果和这个就不一样了,区别在第二个printf语句中的\t\b这两个转义字符输出的效果,为什么? 展开
void main()
{ char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;
printf("a%c b%c\tc%c\tabc\n",c1,c2,c3);
printf("\t\b%c %c\n",c4,c5);
}
书上说Turbo C的运行效果如下所示,
aa bb cc abc
AN
\t是转义字符,功能是跳到下一个制表位置,一个制表区占8个字符,所以光标定位到第九个字符位置上,然后打印出cc,又一个\t,又跳到下一个制表位置,即跳到第17个字符位置处,然后打印abc,\n作用是换行,第二个 printf("\t\b%c %c\n",c4,c5);\t执行后,光标定位到第九个字符位置,\b,退一个字符格,光标定位到第八个字符位置上,然后打印A N(即,c4,c5的值),最后执行\n,换行,结果光标在第三行上。
VC++6.0运行结果:
aa bb cc abc
AN
但是现在如果你用viusal c++6.0软件运行效果和这个就不一样了,区别在第二个printf语句中的\t\b这两个转义字符输出的效果,为什么? 展开
4个回答
展开全部
有的编译器把\t当作一个字符来处理,再\b就回到一行刚开始了,就是第二种情况,有的编译器把\t当作若干个空格来处理,就是第一种情况了
展开全部
在VC++中一样的,就是在第二个printf();里,去掉"\b"就行了。
#include <stdio.h>
void main()
{ char c1='a',c2='b',c3='c',c4='\101',c5='\116';
printf("a%c b%c\tc%c\tabc\n",c1,c2,c3);
printf("\t%c %c\n",c4,c5);//去掉后就和结果一样了
}
#include <stdio.h>
void main()
{ char c1='a',c2='b',c3='c',c4='\101',c5='\116';
printf("a%c b%c\tc%c\tabc\n",c1,c2,c3);
printf("\t%c %c\n",c4,c5);//去掉后就和结果一样了
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为\t在VC++6.0中是把贯标移动到下一个制表位置而\b是将光标移到到下一行的制表位
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Turbo C 和visual C++6.0的编译环境不一样,它的字符占的字节不同!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询