通过学习质数函数了解了++i和i++的区别。++i效率更高。
i++是先用临时对象保存原来的对象,然后对原对象自增,再返回临时对象,不能作为左值;++i是直接对于原对象进行自增,然后返回原对象的引用,可以作为左值。
由于要生成临时对象,i++需要调用两次拷贝构造函数与析构函数(将原对象赋给临时对象一次,临时对象以值传递方式返回一次);
++i由于不用生成临时变量,且以引用方式返回,故没有构造与析构的开销,效率更高。
所以在使用类等自定义类型的时候,应尽量使用++i。
#include <stdio.h>
int main()
{
int n,i,flag = 0;
printf("Enter apositive integer:");
scanf("%d",&n);
for(i=2;i<=n/2;++i)
{
if(n%i==0)
{
flag = 1;
break;
}
}
if(flag==0)
{
printf("%dis a prime number",n);
}
else
{
printf("%dis not a prime number",n);
}
return 0;
}