
C++问题,来帮个忙,很简单。
char*s="\ta\018bc";for(;*s!='\0';s++)cout<<'*';和char*s="\x69\082\n";for(;*s!='\0';s++...
char *s="\ta\018bc"; for(;*s!='\0';s++) cout<<'*';
和
char *s="\x69\082\n"; for(;*s!='\0';s++) cout<<'*';
请问这两个语句句区别在哪里,他们的\0表示的意义不一样吗,前面一个输出
了6个*,后一个只输出了一个*。详细回答谢谢 展开
和
char *s="\x69\082\n"; for(;*s!='\0';s++) cout<<'*';
请问这两个语句句区别在哪里,他们的\0表示的意义不一样吗,前面一个输出
了6个*,后一个只输出了一个*。详细回答谢谢 展开
5个回答
展开全部
首先,你要明白八进制,用八进制表达时,你不能少了最前的那个0。否则计算机会通通当成10进制。C,C++规定,一个数如果要指明它采用八进制,必须在它前面加上一个0,如:123是十进制,但0123则表示采用八进制。这就是八进制数在C、C++中的表达方法。不过,有一个地方使用八进制数时,却不能使用加0,那就是我们前面学的用于表达字符的“转义符”表达法。
我们学过用一个转义符'\'加上一个特殊字母来表示某个字符的方法,如:'\n'表示换行(line),而'\t'表示Tab字符,'\''则表示单引号。今天我们又学习了一种使用转义符的方法:转义符'\'后面接一个八进制数,用于表示ASCII码等于该值的字符。
比如,问号字符(?)的ASCII值是63,那么我们可以把它转换为八进值:77,然后用 '\77'来表示'?'。由于是八进制,所以本应写成 '\077',但因为C,C++规定不允许使用斜杠加10进制数来表示字符,所以这里的0可以不写。
如题中:
第一个s中的字符 '\t' 'a' '\01' '8' 'b' 'c'
第二个s中的字符 ‘\x’'69' '\0' '8' '2' '\n'
其中,\01 是八进制的转义符, 去掉0也是一样的
我们学过用一个转义符'\'加上一个特殊字母来表示某个字符的方法,如:'\n'表示换行(line),而'\t'表示Tab字符,'\''则表示单引号。今天我们又学习了一种使用转义符的方法:转义符'\'后面接一个八进制数,用于表示ASCII码等于该值的字符。
比如,问号字符(?)的ASCII值是63,那么我们可以把它转换为八进值:77,然后用 '\77'来表示'?'。由于是八进制,所以本应写成 '\077',但因为C,C++规定不允许使用斜杠加10进制数来表示字符,所以这里的0可以不写。
如题中:
第一个s中的字符 '\t' 'a' '\01' '8' 'b' 'c'
第二个s中的字符 ‘\x’'69' '\0' '8' '2' '\n'
其中,\01 是八进制的转义符, 去掉0也是一样的
展开全部
'\0'代表字符串结尾,
\0什么也不代表,只代表0的转义,就像\n代表换行一样
\0什么也不代表,只代表0的转义,就像\n代表换行一样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实你用单步跟踪就可以知道原因了。
第一个中字符为\t,a,\01,8,b,c共6个字符,循环体执行6次
第二个中字符为\x69(16进制),\0,8,2,\n,注意到\0表示字符串结束,所以,中做一次循环体。(\08不符合8进制要求,所以8不包括在转义符中)
以上分析没有测试,你可以用单步跟踪看一下就清楚了。
第一个中字符为\t,a,\01,8,b,c共6个字符,循环体执行6次
第二个中字符为\x69(16进制),\0,8,2,\n,注意到\0表示字符串结束,所以,中做一次循环体。(\08不符合8进制要求,所以8不包括在转义符中)
以上分析没有测试,你可以用单步跟踪看一下就清楚了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
具体原因是这样的。第一个字符串里的 \01 被解释成了 8 进制,即ASCII为 1,第二个字符串 \ 后面跟的是08, 8不可能是8进制,所以就组合成了\0 和 8。
可以参考下两个字符串在内存中的值。
第一个字符串:0x09 0x61 0x01 0x38 0x62 0x63
第二个字符串:0x69 0x00 0x38 0x32 0x0a
清楚了吧。^_^
可以参考下两个字符串在内存中的值。
第一个字符串:0x09 0x61 0x01 0x38 0x62 0x63
第二个字符串:0x69 0x00 0x38 0x32 0x0a
清楚了吧。^_^
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个字符串的字符分别为:'\t','a','\01','8','b','c'
第二个字符串的字符分别为:'\x69','\0','8','2','\n'
这里要理解的是转义字符:\x表示十六进制数,\0后面的数如果小于8则表示八进制数,否则就是\0,第一个字符串\01表示八进制字符1,第二个字符串\0之后是8,所以不可能是八进制,表示字符串结束符\0,所以之后的不输出
我把两个字符串都输出了:
a8bc
i
Press any key to continue
第二个字符串的字符分别为:'\x69','\0','8','2','\n'
这里要理解的是转义字符:\x表示十六进制数,\0后面的数如果小于8则表示八进制数,否则就是\0,第一个字符串\01表示八进制字符1,第二个字符串\0之后是8,所以不可能是八进制,表示字符串结束符\0,所以之后的不输出
我把两个字符串都输出了:
a8bc
i
Press any key to continue
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询