×

Loading...
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务

@

这是一篇好文章。例子是C++的,但你只要看懂逻辑就行了。

Report

Replies, comments and Discussions:

  • 工作学习 / 科技领域杂谈 / 就没见过C/C++写得好的国人。不服上几段code来,让那位哥给你论断论断。
    • ++i;
      • 我见过新手被这个弄晕而用错的,可见bug无处不埋,可见C/C++的队伍多么的无奈。
        • Java也有++i。
          • JAVA也好不到哪儿去,不过没有指针,消除了一大隐患,让开发维护人员培训成本和风险都降低。可以有比JAVA风险更低的,那就又好一点儿。我去交换植物了,给那个哥整这玩意吧。
      • 严禁使用无意义的变量名,打回去重写。像我这样的高手一般都是用 i_am_an_index_that_will_be_incremented_by_one 这样,一目了然啊
        • this is good...lol
      • ++i 不应该代表C++,  使用C++应该避免这样的语句。
        • 对不起,俺以后再也不敢了。
    • printf("hello,world!");
      • It's C, not C++. C++: std::cout << "hello, world";
    • 这个我知道, C/C++等于一!
      如果C!=0,而且C的值加了1。:-)
      • when C goes to infinity
      • 错!C++等于21。
        • C/C++等于21
    • here is one
      include <graphics.h>
      #include <stdlib.h>
      #include <stdio.h>
      #include <conio.h>
      #include <dos.h>
      #include <time.h>
      #include <bios.h>

      #define UP 72
      #define DOWN 80
      #define LEFT 75
      #define RIGHT 77
      #define ENTER 13
      #define ESC 27
      #define YES 1
      #define NO 0
      int x=320,y=100,marble=32,marble_color=12;
      void *p;
      size_t area;
      // Matrix of board
      int board[7][7]=
      {
      {-1,-1,1,1,1,-1,-1},
      {-1,-1,1,1,1,-1,-1},
      { 1, 1,1,1,1, 1, 1},
      { 1, 1,1,1,1, 1, 1},
      { 1, 1,1,1,1, 1, 1},
      {-1,-1,1,1,1,-1,-1},
      {-1,-1,1,1,1,-1,-1}
      };
    • 这个还不够好?
      • 少一个plus.
        • 少一个plus, 编译通不过
          • 要么给compiler贿赂一下?
            • 可是compiler看C+怎么看怎么别扭啊. C++=D, C+是什么呢?
    • x888 俨然以大拿的姿态在谈论。可惜,可惜啊!要知道,提 “C/C++" 说法的,水平都不怎么样,至少没有达到那个境界。C 和 C++只是长得像而已。对菜鸟级的人(像x888), C++ 60-70%像C,而对真正的大拿,the similarity <= 5%, or even less.
      打个比方,中国人与日本人长得很像,但思维方式,做事理念,两个民族差得很远。日人基本上是欧美式。

      在整个I.T.行业,C++的悲剧就在于她与C的表面的similarity. C++的大拿都知道,大多数所谓的C++ code,其实还是C风格的,procedure-style, rather than Object Oriented. Still using too much if-else; switch. 悲剧,杯具,被拒!

      True C++ code rarely uses switch-case, very limited usage of if-else. Each function should use <= 25 lines of codes. Otherwise, it's deemed done by a good C programmer, not C++.
      • 今天是感谢的日子,所以我感谢你。
        但是你有所不知,我的研究方向是面向对象,同时我是编译方法的专家,我可以轻而易举地写一个编译程序,当然这个有些吹牛,我只是写过一个相当庞大的一个真实语言的编译器,当做练习而已。这只是想告诉你,我对各种语言的特征,包括语法和语用,以及设计那种语法,语用的目的清楚得一塌糊涂。当然,这个是从前,因为我没做这些已经很多年了。
        • 谢谢你的坦率。偶相信你是编译方法的专家,同时你的研究方向是面向对象。但依愚只见,研究方向是面向对象, 抑或CS教授,与I.T.行业的 C++大拿是不同的概念。
        • 最讨厌这种吹得每边的了。各种语言你都懂?给咱讲讲PL/I, REXX, PROLOG, LISP吧,这可都不是新语言了。可能比较对你口。
          C是个极不严谨的玩具罢了,因为便宜,学生用多了才得以普及。说白了高级语言都是玩具C++是个大玩具而已,写几行程序没什么神秘的。
      • What is your said is typical bullshit who knows little on programming.
        True C++ code rarely uses switch-case, very limited usage of if-else. Each function should use <= 25 lines of codes. Otherwise, it's deemed done by a good C programmer, not C++.
        • 呵呵,看你就是一个loser, 满嘴脏话。Reminder - 这里可是 工作学习 /科技领域杂谈 哦。
          • 只有LOSER才会象你一样讲话。 烤烤自称大拿们一段程序。 下面的CODE是不是合法的C++程序? 看不懂的就不要自己称大拿了
            bool Postorder::next()
            {
            switch( pc )
            case START:
            while( true )
            if( !lchild() ) {
            pc = LEAF;
            return true;
            case LEAF:
            while( true )
            if( sibling() )
            break;
            else
            if( parent() ) {
            pc = INNER;
            return true;
            case INNER: ;
            }
            else {
            pc = DONE;
            case DONE: return false;
            }
            }
            }
            • 程序重排
              bool Postorder::next() { 
                switch( pc )
                case START:
                while( true )
                   if( !lchild() ) {
                      pc = LEAF;
                      return true;
                case LEAF:
                      while( true )
                         if( sibling() )
                            break;
                         else
                            if( parent() ) {
                               pc = INNER;
                               return true;
                case INNER:   ;
                            }
                            else {
                               pc = DONE;
                case DONE:    return false;
                            }
                   }
              }
              
            • 真正的好程序员,不写别人看不懂的程序。所以真正的好同志,不是大拿。
              • yes
              • very true
              • 知音!握手!如我在前贴中指出,I.T. 行业的 C++大拿是尽量避免使用 switch-case & if-else 的。while( true ) 更是 C 语言的流毒啊!C++ 的精髓是 encapsulation, polymorphism, and inheritance.
                • 该同志不光有while (true), 而且有falling-through cases, 和 if block going through cases. 要说while (true) 是流毒,falling-through cases 就是癌症,if block going through cases 就是艾滋病。
              • 嗯,写机器能懂的程序小学生就足够了,写可以轻易让人读懂的程序是需要很深功力的
            • 惭愧,我实在无法理解为什么要这样写程序 。哪位知道这样写程序的好处是什么?
      • 对于我来说,C/C++ 就是一个语言, 需要用对象的时候用对象,需要用Switch的时候用Switch. 没有必要一定使用所谓的封装。需要速度的时候我还要嵌入一些汇编代码。 强调 C 和 C++ 的区别的人,其实还停留在语言的阶段,没有深入到解决问题的阶段。
        • 100%同意。其实用C写程序的时候也可以有意识的使用一些OO的思想。不管什么语言,关键是1、要解决问题。2、可维护性。3、可扩展性。4、高性能低资源占用。。。。。。
      • 这个说的没错, 但是现实生活中可能性几乎没有. 哪天我如果看到一个真正的大的系统是这么写出来的, 想必共产主义已经实现了. True C++ code rarely uses switch-case, very limited usage of if-else. Each function should use <= 25 lines of codes.
      • 能否解释一下为什么在C++里不能用switch/if-else语句?
        • 这是一篇好文章。例子是C++的,但你只要看懂逻辑就行了。
      • 不同的情况下对C++的很多特性使用情况是不一样的。比如对于大的系统而且性能要求特别高的话,那些多层继承和多继承,虚函数和虚继承用法就要限制少用,而template就被鼓励多用。
    • 一看就是外行。code写得好坏没有大区别,只要花5分钟了解以下规范坏code就可以改成好错哦的。顺便夸一下,俺C写了十几年了,不敢说自己写的好,但像俺这么精通的不太多。
      • 佩服摇兄的谦虚精神。当年在哈佛听一讲座时,教授曾说过,理想中的C++高手最好没学过C语言。偶相信C的高手很多多,但怀疑C++的.
        • 呵呵,学究派。理想中的高手不用学习任何编程语言的。所有程序员都叫他为“老板”。
    • 什么意思?彻底没看懂啊。
    • What is different of following 2 pieces of code
      code 1:

      int i = 0:
      int c = 0;
      for(i = 0; i<10; i++) {
      c = c + i;
      }

      code 2:

      int i = 0;
      int c = 0;
      for(; i<10; i++) {
      c = c + i;
      }

      :-)
      • I didn't see the difference.
        • A compiler expert doesn't say that
      • The integer i in code2 is intialized at the beginning and the i in code1 is not sure to be 0 until "for(i = 0; i<10; i++)" has been reached. However, it makes no difference unless the i is accessed indirectly
        before "for(i = 0; i<10; i++)" and/or "for(; i<10; i++)".
    • 开始讨论回字有几种写法了?
      • Good point!
    • 请问你是哪国人? 如果你是国人写过不好C/C++程序就不奇怪了。
      好程序员说话也要严谨。写些模棱两可无人能懂的烂程序不是什么本事。你是哪个系统架构/指令集编译器的专家?编译方法专家是什么意思?上学做练习?别跟我说什么系统都懂。不自量力。
    • 老大也有掉井底的时候 :D
    • 请问你是如何论断 C/C++ code 好坏的?
      • Good question!