百思不得其解 关于strlen
#include <iostream>
using namespace std;
#include <cstdio>
#include <cstring>
int main()
{
char s[]={"\\141\141abc\t"};
cout<<strlen(s)<<endl;
}
为什么上面的这个输出为9,
下面的这个输出为10啊?
#include <iostream>strlen C
using namespace std;
#include <cstdio>
#include <cstring>
int main()
{
char s[]={"\\141\109abc\t"};
cout<<strlen(s)<<endl;
}
[解决办法]
转义字符“\ooo"要求三位八进制数字,被解释为内码值为该8进制数字的字符
"\141"被解释为8进制数字141所表示的字符
而
"\109"中,9不是八进制数字,所以被解释为"\10"和字符'9',成了两个字符。
[解决办法]
9 超出 8 进制范围了