cout << '\018';的结果为什么是312?该如何处理

cout << '\018';的结果为什么是312?
百思不得其解,请高手指点。

------解决方案--------------------
int main(int argc, char* argv[])
{
wchar_t x = '\018 ';
cout < <x < <endl;
cout < < '\018 ';
return 0;
}
------解决方案--------------------
8进制数中出现 '8 ', 结果未知
------解决方案--------------------
int d = '\018 ';
char* cd = (char*)&d;

可以看到

cd[0] 里是 56 '8 '
cd[1] 里是 1 '口 '
cd[2] 里是 0
cd[3] 里是 0