牛骨文教育服务平台(让学习变的简单)

2.9 操作符

有趣的是,在整数上使用的数学运算同样可以被用在字符上,例如

char letter;
letter = "a" + 1;
cout << letter << endl;

输出字母b。尽管对字符使用乘法在语法上是合法的,但这几乎从来都不会用到。

前面我说过你只能给整型变量赋整数值,给字符变量赋字符值,但这并不完全正确。在某些情况下,C++对类型进行了自动转换,例如,以下写法是合法的:

int number;
number = "a";
cout << number << endl;

结果是97,C++中使用这一数字表示字母"a"。然而,把字符当做字符处理,把数字当做数字处理通常是一个好主意,除非有一个很好的理由,才把一种类型转换成另一种类型。

自动类型转换是在设计一种编程语言时存在的共同问题的一个例子,它和形式体系有冲突,形式体系要求形式语言,应该具备无例外的简单规则,然而便利性要求编程语言易用于实践。

大部分时候,便利性会胜出,这对于高手程序员通常是好事,他们摆脱了严格而笨拙的形式体系。但对于菜鸟程序员来说并非好事,复杂的规则以及大量的例外会使他们陷入困惑。在这本书中,我试图通过强调规则并忽略大多例外来简化学习。