刚刚发现以下所有内容都可以正常工作:
printf( "%ls\n", "123" L"456" );
printf( "%ls\n", L"123" "456" );
printf( "%ls\n", L"123" L"456" );
输出结果为:
123456
123456
123456
为什么我可以自由地混合和匹配宽字符串字面量和窄字符串字面量以获得一个宽字符串字面量?这是一个被记录下来的行为吗?
刚刚发现以下所有内容都可以正常工作:
printf( "%ls\n", "123" L"456" );
printf( "%ls\n", L"123" "456" );
printf( "%ls\n", L"123" L"456" );
123456
123456
123456
6.4.5
段字符串字面量的第4段中说明(重点在于此):6.4.5 字符串字面值
在第6阶段的翻译过程中,由任何相邻字符和宽字符串字面值记号指定的多字节字符序列将连接成单个多字节字符序列。如果任何一个记号是宽字符串字面值记号,则生成的多字节字符序列将被视为宽字符串字面值;否则,它将被视为字符字符串字面值。