当前位置: 代码迷 >> C语言 >> printf问题
  详细解决方案

printf问题

热度:460   发布时间:2007-09-03 22:09:26.0
printf问题
printf("%d\n",strlen("\t\"\065\xff\n"));


为什么输出的是5,我不是很明白

[此贴子已经被作者于2007-9-3 22:24:25编辑过]

搜索更多相关的解决方案: printf  

----------------解决方案--------------------------------------------------------
\t
\"
\065
\xff
\n也占一个

顺便新手报道一下,请多多关照。。

[此贴子已经被作者于2007-9-3 22:55:20编辑过]


----------------解决方案--------------------------------------------------------

不太明哦!


----------------解决方案--------------------------------------------------------
以下是引用r78z在2007-9-3 22:52:00的发言:
\t
\"
\065
\xff
\n也占一个

顺便新手报道一下,请多多关照。。

转义字符


----------------解决方案--------------------------------------------------------
以下是引用fcyvhk在2007-9-3 22:09:26的发言:
printf("%d\n",strlen("\t\"\065\xff\n"));


为什么输出的是5,我不是很明白

\t //Tab字符
\" //字符"
\065 //八进制数65对应的字符'5'(53)
\xff //十六进制数ff(255)对应的字符
\n //换行符

转义字符是一个字符,长度为1.
----------------解决方案--------------------------------------------------------

strlen得到的是实际的字符个数,而不包括字符串结尾的\0,如果用sizeof的话,结果应该是6,再结合楼上的,就很显然了


----------------解决方案--------------------------------------------------------
同意楼上
----------------解决方案--------------------------------------------------------

受教了,谢谢nuciewth;PcrazyC;r78z


----------------解决方案--------------------------------------------------------

刚学编程几天,请各位帮忙找下错误,该程序目的是找出两输入值的最大值并显示出来
#include "conio.h" /*顺便问一下这句啥作用*/
main ();
{int a,b,c;
scanf ("%d,%d",&a,&b);
c=max(a,b);
printf ("max=%d",c);
}

int max(int x,int y)
{int z;
if (x>y) z=x;
else y=z;
return (z);
getch ();
}


----------------解决方案--------------------------------------------------------
#include "conio.h" //最后面的getch()包含在这个头文件中
main ();
{int a,b,c;
scanf ("%d,%d",&a,&b);
c=max(a,b);
printf ("max=%d",c);
}

int max(int x,int y)
{int z;
if (x>y) z=x;
else z=y; //这句有错
return (z);
getch ();
}
----------------解决方案--------------------------------------------------------
  相关解决方案