c++进制转换问题
inline char next_char(char const *&p) {
if (*p != '\') // is special; hence '\'
return *p++;
else { // 3 octal digits:
int char_value = digit(p[1], 8) * 64
+ digit(p[2], 8) * 8
+ digit(p[3], 8);
if (char_value>std::numeric_limits<char>::max()
|| char_value<std::numeric_limits<char>::min())
throw domain_error(string("not a char"));
p += 4; // backslash and 3 octal digits
return char_value;
}
}
z看到c++程序设计语言的时候有这么一道题
完整的代码http://blog.csdn.net/shining100/article/details/5452989,最后就是
但是这个函数这,我实在不明白为什么“”这个引号是干啥的呢?如果是为了表示八进制形式吗“xxx”,但是我看有的地方说是八进制在前面加上0就可以了,这个函数的意思我始终没有搞明白!!那个大神能给我说说嘛?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
谢谢!!!
这段代码目测是用于处理C++的字符常量转义序列。但是即便是只处理八进制,逻辑也不正确,因为标准规定了:如果未满三个字符就遇到了非八进制字符,那就用已经得到的字符计算数值,也就是''等情况。
前面加上一个0是C/C++中八进制数的一种表达方法。
还有一种,八进制转义字符,是由反斜杠''和随后的1~3个八进制数字构成的字符序列。这在C、C++中也是比较习惯的用法。