codecamp

C++ 字符运算操作符

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

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

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

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

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

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

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

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


C++ 运算顺序
C++ 将代码组合来
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }