codecamp

C++ 增量与减量操作符

因为增量和减量都是很常见的操作,所以C++为它们提供了专用操作符。++操作符的功能是将当前变量增加1,它支持int、char和double类型,而--操作符将当前变量减少1。这两个操作符都不能应用于apstring类型,也不能应用于bool类型。

从技术角度讲,增加一个变量的同时将它作为一个表达式是合法的。例如,你可能会看到这样的写法:

cout << i++ << endl;

看这个例子,增量发生在输出之前或者之后并不清楚。因为这种表达式令人困惑,所以不建议读者使用。 实际上,为了进一步阻止你使用它,我不会告诉你该语句的答案。如果想知道,请自行尝试。

我们可以使用增量操作符重写字符计数程序:

int index = 0;
while (index < length) {
  if (fruit[index] == ’a’) {
    count++;
  }
  index++;
}

下面是一个常见错误:

index = index++; // 错误!!

很不幸,这在语法上是正确的,编译器不会给出警告。这个语句会导致index的值没被改变【译者注1】。这是个难以定位的bug。

记住,你可以写index = index +1;,也可以写index++;,但是不能将他们混到一起。

译者注1: index = index++; 的实现与编译器有关,原书这里的说法不是很准确。当然,这种写法肯定是要避免的。

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; }