| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 555 人关注过本帖
标题:[转载]写坏C程序的决窍
只看楼主 加入收藏
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
结帖率:100%
收藏
 问题点数:0 回复次数:5 
[转载]写坏C程序的决窍

写坏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)定义带参数宏的时候尽量节约括号,省得写起来麻烦。
这样可以保证在使用宏的地方不时地出现隐含错误,就像埋下的地雷,检查源程序也很难发现。

2007-03-09 08:53
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 

第三点很精辟诶!!!

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-03-09 13:18
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
就喜欢盯着这个地方看,唉,我都怕了这个东西了

雁无留踪之意,水无取影之心
2007-03-09 14:58
暗灵幽冥
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-2-24
收藏
得分:0 
满扭曲的想法......
2007-03-09 15:16
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
传说中的。。。黑色幽默!

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-09 19:37
luckdog0426
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-3-1
收藏
得分:0 

无语

2007-03-09 21:01
快速回复:[转载]写坏C程序的决窍
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035575 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved