unicode char与非unicode char比较,但没有警告也没有错误

Bri*_*ndy 1 c++ string unicode

为什么下面的代码没有给出错误,也没有关于隐式转换的任何类型的警告?

std::wstring str = L"hi";
if(str[0] == 'h')
      cout<<"strange"<<endl;
Run Code Online (Sandbox Code Playgroud)

正常的正常代码是:

std::wstring str = L"hi";
if(str[0] == L'h')
      cout<<"strange"<<endl;
Run Code Online (Sandbox Code Playgroud)

编译器:visual studio 2005

警告级别:4级(最高)

jal*_*alf 7

它不会发出警告,因为比较有效.通常,您可以始终比较整数类型,只需根据需要将其提升为更广泛的类型.

而且我很确定一些编译器会发出警告.你在用哪一个?(在任何情况下,警告都是特定于编译器的,并且他们不需要警告这个或其他任何事情)