const unsigned long nGiga = 1024L * 1024L * 1024L; |
而不必担心程序每次执行这个语句时作两遍乘法,因为编译器会自动地把它改为
const unsigned long nGiga = 1073741824L; |
而不是傻乎乎地让计算机在执行到这个初始化赋值语句的时候才计算。当然,如果你愿意在上面的代码中掺上一些变量的话,编译器同样会把常数部分先行计算,并拿到结果。
表达式预计算并不会让程序性能有飞跃性的提升,但确实减少了运行时的计算强度。除此之外,绝大多数编译器会把下面的代码:
// [假设此时b, c, d, e, f, g, h都有一个确定的非零整数值,并且, // a[]为一个包括5个整数元素的数组,其下标为0到4] a[0] = b*c; a[1] = b+c; a[2] = d*e; a[3] = b*d + c*d; a[4] = b*d*e + c*d*e; |
优化为(再次强调,编译器实际上是在中间代码的层次,而不是源代码层次做这件事情!):
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有
|