程序员们最爱犯的几个愚蠢错误


错误1,空格引发的血案



@@ -348,7 +348,7 @@ case "$DISTRO" in

-  rm -rf /usr /lib/nvidia-current/xorg/xorg

+  rm -rf /usr/lib/nvidia-current/xorg/xorg

恩,确实没有比这个更愚蠢更严重的错误了!


错误2,初学者最易犯的错误



int main() {...}

硬是写成了



int mian() {...}

编译不通过,自己也硬是折腾了两个小时。

开始,使用的是Code::Blocks,以为是IDE故障;后来,换成Visual Studio,问题依旧。

紧接着,考虑到是不是自己的计算机问题,换成同学的计算机,问题依旧。

我的代码没有逻辑问题呀,很简单。我甚至删除了所有的函数、语句块,只留下一句:



printf("hello world!\n");


那时,我真的快哭了!也就是在某个瞬间,发现main这个单词写错了。

亲身经历的故事,很愚蠢是吧!可是我依旧很怀恋初学C语言的那段日子。


错误3,忽略编译器警告

忽略编译警告,或者编译警告没有全开。

认真阅读编译器信息,它能解决很多你本来要花很长时间才能找到的问题。

注意,很多经典的情况,编译器都会给警告,完全不需要通过所谓编程规则去限制,例如:



if ( p = NULL ) {}

很多书会推荐人写 NULL == p 这种模式,其实完全没有必要,因为这种错误编译器会检查出来。



pansz-pc:/tmp$ gcc -Wall 1.c

1.c: In function main:

1.c:6:5: warning: suggest parentheses around assignment used as truth value [-Wparentheses]

     if ( p = NULL ) {

     ^

下面来看另外一个例子:



#include <stdio.h>

int main()

{

    unsigned char i;

    for (i = 0; i <= 255; i++) {

        printf("%d\n", i);

    }

    return 0;

}

上面这段代码很多人觉得不会给警告,但它是有的:



pansz-pc:/tmp$ gcc -Wall -W 1.c

1.c: In function main:

1.c:7:5: warning: comparison is always true due to limited range of data type [-Wtype-limits]

     for (i = 0; i <=255; i++)

     ^

实际上,很多问题都是编译器警告能解决的,省掉你很多调试工作。

PS:珍惜生命,请从关爱Warning开始!


错误4,边界条件处理




for (size_t i = vec.size() - 1; i >= 0; -- i) {

    // .... Do something with vec[i]

}

这个蛋疼的写法编译器是会给Warning的,不过忽略Warning不是一个正(yu)常(chun)的程序员(wo)所必须干的事情么。
这个错误有时发现不了是因为在循环内可能有break,说不定在中间就出去了。

错误5,标点符号惹的祸




while();

{

……

}

这个,不解释。相信很多人都在这上面摘过跟头。

错误6,偷梁换柱




for(int i = 0; i < n; ++j)

这个,呵呵。本人亲历!

错误7,python缩进

使用过python的人都有这个体会,有时候缩进错了,导致逻辑不按预定的来。多打两个空格什么的,最忧伤了!

错误8,case…break




switch( i )

{

  case 0:

    str = "zero";

 

  case 1:

    str = "one";

 

  case 2:

    str = "two";

}

这个也是广大程序员经常犯的一个低级错误。


附:C语言中史上最愚蠢的Bug

最后,总结一句话:吃大写的亏,上小写的当,检拼写的错,查空格的误,艹手抖的蛋,骂360的毒。

这些坑,你踩了几个????


还有哪些坑,欢迎留言,大家一起来吐槽。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值