真的简洁吗?
别人博客上看到这样一篇文章:
喜欢C,没有理由,追求短代码~~我想没有一门语言可以达到这样的效果~~本来已经很精简的程序在熟练的程序员手上能够缩减到原长度的1/4,而且功能没有任何差别~
两段完全一样的代码~~
#include <stdio.h>
void main()
{
int k[]={100,50,10,5,2,1},n,m,i,j,t;
while(scanf("%d",&n))
{
if(n==0) break;
t=0;
for(i=0;i<n;++i)
{
scanf("%d",&m);
for(j=0;j<6;++j)
while(m>=k[j])
++t,m-=k[j];
}
printf("%d\n",t);
}
}
缩减后:我爱C语言丶__唯美
main()
{
int k[]={100,50,10,5,2,1},n,m,i,t,s;
for(;scanf("%d",&n),n;printf("%d\n",t))
for(t=i=0;i<6*n;t+=s=m/k[i%6],m-=s*k[i++%6])
scanf(i%6?"":"%d",&m);
}
这就是C的魅力所在~我爱C语言~~
我觉得这是一个误区,优秀的代码在节省空间的情况下不应以牺牲运行效率和可读性为代价,上面的代码,原来的代码看了就知道用途(最少第四版人民币的数量),可是看了下面那段代码,你几遍能读懂它的意思?
我觉得写代码应该在可读性(易于别人阅读、管理)和时间效率(速度)上找到平衡,代码长度应该被忽略,毕竟看似短的代码编译之后未必很短短:
(Dev c++ 4.9.9.2)
上面的代码19970 b
下面的代码18946 b
两者都占用硬盘都是 20480 b