佳木斯建设网站,做网站公司需要什么资质,安徽省建筑平台信息网,西安网站关键词推广递增运算符#xff08;#xff09;和递减运算符#xff08;--#xff09;#xff1a;前缀版本位于操作数前面#xff0c;如x#xff1b;后缀版本位于操作数后面#xff0c;如x。两个版本对操作数的影响是一样的#xff0c;但是影响的时间不同。这就像吃饭前买单和吃饭…递增运算符和递减运算符--前缀版本位于操作数前面如x后缀版本位于操作数后面如x。两个版本对操作数的影响是一样的但是影响的时间不同。这就像吃饭前买单和吃饭后买单的最终结果是一样的但是买单的时间不同。
程序清单5.7演示递增运算符的这种差别。
//5.7
#if 1
#includeiostream
using namespace std;int main()
{int a 20, b 20;cout a a : b b endl;cout a a : b b endl;cout a a : b b endl;system(pause);return 0;
}
#endif
a意味着使用a的当前值计算表达式然后将a的值加1而b的意思是先将b的值加1然后使用新的值来计算表达式。
虽然选择使用前缀格式还是后缀格式对程序的行为没有影响但执行速度可能有细微的差别。对于内置类型和当代的编译器而言这看似不是什么问题。然而C允许您针对类定义这些运算符在这种情况下用户这样定义前缀函数将值加1然后返回结果但后缀版本首先复制一个副本将其加1然后将复制的副本返回。因此对于类而言前缀版本的效率比后缀版本高。
总之对于内置类型采用哪种格式不会有差别但对于用户定义的类型如果有用户定义的递增和递减运算符则前缀格式的效率更高。