- 论坛徽章:
- 0
|
初学C++,近日在看C++ primer 3ed,对3.1节的wchar_t的介绍有疑惑。书中说wchar_t是用于特殊语言集的,如汉字等。我觉得可能是对unicode的支持。遍了一个小程序测试一下,产生了问题。
书中介绍用引用wchar_t字符要在字符前加L。下面是我的2个程序,对有L和没有L出不同。
[program 1]
#include <iostream>;
using namespace std ;
const wchar_t wchar_c = 'W' ;
int main (int argc , char **argv)
{
wchar_t a ;
char b;
int c;
a = '忍';
b = 'C' ;
c = sizeof(a);
cout << "["<< a <<"]"
<< "["<< wchar_c <<"]"
<< "["<< b <<"]"
<< "["<< c <<"]"
<< "\n" ;
}
执行输出:[51404][87][C][4]
[program 2 ]
#include <iostream>;
using namespace std ;
const wchar_t wchar_c = L'W' ;
int main (int argc , char **argv)
{
wchar_t a ;
char b;
int c;
a = L'忍';
b = 'C' ;
c = sizeof(a);
cout << "["<< a <<"]"
<< "["<< wchar_c <<"]"
<< "["<< b <<"]"
<< "["<< c <<"]"
<< "\n" ;
}
执行输出:[204][87][C][4]
注解:忍的字节码为 C8 CC
C8 CC = 51404
CC = 204
为什么输出会不同?怎样使用wchar_t ? wchar_t的大小为什么是4?
我的系统solaris 5.8(x86) gcc 3.3.2
 |
|