我已经得到了一个代码,你可以看到我可以用以下两种方式之一编写,唯一的区别是,因为在第二个函数中,参数被声明为非常量,我可以用它来代替声明一个新的变量(在第一功能NUM1),但我”好奇哪一个会更适合是否会有由编译器为每一个所产生的输出汇编代码之间的任何差异:编写这段代码的这两种方式中的哪一种更适合?
void Test(const long double input){
long double num=(6.0*input);
long double num1=9.0;
for (int i=0;i<5;i++)
num1*=num;
cout <<num1<<'\n';
}
void Test(long double input){
long double num=(6.0*input);
input=9.0;
for (int i=0;i<5;i++)
input*=num;
cout <<input<<'\n';
}
很可能您的编译器有一个开关将汇编代码保留在文件中,可能带有.s扩展名。这是避免繁琐测试以确定两个实现是否真的等价的好方法:如果程序集是相同的,它们就是。 – 2010-10-16 18:42:00
为什么不生成程序集并查看!除非您完全告诉我们您的设置,否则只有您可以回答这些问题之一。 – 2010-10-16 20:00:14