写坏C程序的几大诀窍

如果你常常按照下面方式写程序,可以保证你的程序经常出错,你也经常头疼。



1) 根本不管程序的格式,把程序写得老师也看不懂(自己当然更看不懂)。

用格式迷惑自己也是弄坏程序的绝招。例如:

if (a > 0)
    if (x == y) {
        ....
        };
    else {
        ....
    }

请自己分析这到底是什么意思。



2)不关心scanf或者printf中格式串和对应参数类型匹配的问题。例如(假设x, y是double类型,n是int类型)写:
 
printf("%d, %f", x, n);
scanf("%d %f", &x, &y, &n);

这样可以保证输入输出总出现莫名其妙的问题,而且你和别人都找不到原因。



3)写scanf时,在接收输入值的变量名之前不写&符号。

这样做常常还可以顺便摧毁你所使用的计算机系统,给自己再多找点麻烦,有自制病毒之妙。



4)写注释时随便地忘记几个结束符号。例如:

x = y + 1; /* ha ha ha
z = x * 2; /* fine fine fine */

这样可以保证编译程序“按照你的指示”把你的一段代码吃掉。



5)在比较的时候用 = 代替 ==。例如:

if (x = y)
   z = x + 5;

这可以保证x和y一定相同,而是否执行赋值就看你的运气了。



6)定义局部变量后,不初始化就使用。例如:

int fun(int n) {
   int m;
   return n + m;
}

如果对指针变量这样做,常可以带来隐秘的破坏效果,让最有经验的人也难找到毛病的根源。例如写:

int fun(int n) {
   int* p;
   *p = n*n;
   return *p + n;
}

这样做有时可以顺便摧毁你用的计算机系统,再给自己多找点麻烦。



7)函数定义为有返回值的,但(有时)却不去写return(101-102页)。

这样做可以保证你的程序不时出现古怪行为。



8)不关心变量的范围,例如对循环次数很多的变量用 short 类型做循环等。

这样做可以得到不明不白的结果;有时还可以使程序永不停止,直到你用的计算机累死为止。



9)用sizeof运算符去计算函数的数组参数的大小,或者计算字符串的大小。

这样做一般可以保证计算结果错误,出现的问题难以预料。



10)不写函数原型说明,采用过时原型说明形式(103-107页),或者故意写错误的原型说明。

这样做一般都能骗过编译程序,阻止它帮助你检查程序错误,使你自己麻烦多多。



11)定义带参数宏的时候尽量节约括号,省得写起来麻烦。

这样可以保证在使用宏的地方不时地出现隐含错误,就像埋下的地雷,检查源程序也很难发现。



写坏C程序的秘诀还有很多,我们将在这里总结交流如何写坏程序,使自己头疼,给老师找麻烦的经验。欢迎大家投稿。来函请发“坏程序经验”