c程序设计谭浩强版吧 关注:3贴子:212
  • 87回复贴,共1

{水} 谭C错误太多 慎入

只看楼主收藏回复

谭C 许许多多基础知识都说错了
新人慎入
老人可以当成改错题集看看
平均5页找出1个错误算及格


IP属地:广东1楼2014-08-07 14:13回复
    你找给我看看


    2楼2014-08-07 14:46
    回复
      @存在913578307
      c程序设计 第三版
      1.3 C语言版本
      目前最流行的C语言有以下几种:
      ·Microsoft C 或称 MS C
      ·Borland Turbo C 或称 Turbo C
      ·AT&T C
      这些都不是C语言的版本
      这些是C语言的实现
      简直贻笑大方
      ========================================
      3.8.2 算术运算符和算术表达式
      .....优先级较高的先于优先级较低的进行运算 ... 优先级相同时,则按运算符的结合性所规定的结合方向处理...
      错了 举个例子
      a+b && c*d
      这里 c*d 优先级高于 + 高于&&
      但是 结果是a+b 先算
      =========================================
      【例 3.17】
      ...对P=(i++)+(i++)+(i++)应理解为三个 i 相加,故 P 值为 15...
      q=(++j)+(++j)+(++j)应理解为 q先自增 1,再参与运算,由于q自增1三次后值为8,三个 8 相加的和为 24......
      全部错 这是未定义行为
      P的值未必是15
      q的值未必是24
      这个属于表达式里面的一个很重要的内容
      ===========================================
      3.11.2基本类型的分类及特点
      字符型 char 1 C 字符集
      基本整型 int 2 -32768~32767
      短整型short int 2 -32768~32767
      长整型 long int 4 -214783648~214783647
      无符号型 unsigned 2 0~65535
      无符号长整型 unsigned long 4 0~4294967295
      单精度实型 float 4 3/4E-38~3/4E+38
      双精度实型 double 8 1/7E-308~1/7E+308
      后面2项 分别表示
      字节 数值范围
      出了 char 是 1 字节是对的之外
      其他的基本都错了
      具体多少个字节依赖具体编译器
      绝不是张口就来的2字节 4字节
      ========================================
      数组元素的一般形式为:
      数组名[下标]
      其中下标只能为整型常量或整型表达式。如为小数时,C 编译将自动取整
      自动取整?
      随手贴一条错误提示
      [Error] error: array subscript is not an integer
      会自动取整怎么还会Error呢 费解?


      IP属地:广东3楼2014-08-07 15:38
      收起回复
        对啊,字节数是根据编译器来看的


        来自Android客户端4楼2014-08-07 23:54
        回复
          但是它书上是安int 2个字节来运算啊


          来自Android客户端5楼2014-08-07 23:55
          回复
            这个字节的事,书上有地方说了,turbo c的整型是2个字节,vc是4个字节,在书的40页,而且还声明本书在举例时整型变量占2个字节


            来自Android客户端6楼2014-08-08 00:03
            收起回复
              对于优先级这个问题,我有另外一个看法,你觉得计算机吧程序(a+b&&c*d)一下读进去,还是先读a+b呢?我觉得是后者,不过这个看法不知道是不是正确的


              来自Android客户端7楼2014-08-08 00:11
              收起回复
                那道例题目前还没看到


                来自Android客户端8楼2014-08-08 00:22
                收起回复
                  最前面和最后面一个问题,我能力有限


                  来自Android客户端9楼2014-08-08 00:24
                  回复
                    对于这个优先级,if(a+b==0&&b*d==0)对于这个计算机先去判断a+b是否等于0的,如果换成是‖的话,前面的成立后面就不用运算和判断了,我认为,是我认为啊,你认为这是优先级的事,其实是计算机读入的先后问题或者说是程序运行到哪里的问题


                    来自Android客户端10楼2014-08-08 00:41
                    收起回复


                      来自Android客户端11楼2014-08-08 07:48
                      回复


                        来自Android客户端12楼2014-08-08 07:59
                        回复
                          这是例题的,这也要分情况,谭c中也有说明


                          来自Android客户端13楼2014-08-08 08:15
                          收起回复
                            你说的未定义行为,谭书也有提醒我们写程序的时候要写正确的程序,不用计算机来判断,这样就可以避免不同编译器得出不同的结果啦


                            来自Android客户端14楼2014-08-08 10:17
                            收起回复
                              一句话解决所有问题:RTFM


                              15楼2014-08-08 17:31
                              回复