2013-04-18 56 views
1

假设wcwchar_tcchar
1)这两项任务有什么不同?赋值和等号运算符中的宽字符和字符

c = 'a'; 
wc = L'a'; 

2)是否有强制的ASCII值的cwc平等的任何规则?编译器究竟意味着什么wc == c

+5

'char'和'wchar_t'都是整型。通常的积分促销规则适用。 –

+0

@KerrekSB谢谢。那'L'呢?如果它们是两个不可分割的部分,那么''a'与'L'a''没有什么区别。这是否也是真的? – JalalJaberi

+0

@KerrekSB在这里推广或转换吗? (我会说这是转换。) – dyp

回答

1

否 - 标准保证基本执行字符集和基本宽执行字符集都包含'a',但不能保证它们在两者中都具有相同的值。

§2.3/ 3给出了一些限制(例如,数字应该是连续的),其中没有一个适用于此,还有一个最终:“执行字符集的成员值和其他成员集的值是locale -具体。”

因此,它不仅不能保证,但至少在理论上它甚至可以在/更改语言环境时更改。

+0

Kerrek的评论怎么样?所以他们都是不可或缺的,这不会导致对这个问题的回答吗? – JalalJaberi

+0

@JalalJaberi:只影响类型,而不影响数值。你可以比较它们,但不能保证结果。 –

+0

并比较它们的比较它们的整数值,然后,没有任何保证!谢谢。 'char'和'wchar_t'没有那么友好的关系! :) – JalalJaberi