51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3037|回复: 27
打印 上一主题 下一主题

王琰老师上课时的一处错误

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-5-13 14:15:36 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我是20期学员,上单元测试时,记得王琰老师为了举例程序耦合度应当降低,这样可以实源程序代码的复用性提高,写出过一段代码。大致上是:
int count(char c,int a,int b)
{
    if(c==flag)  return a+b;
    else return a-b;
      
}
老师说这段代码本身没有错误
但要完成+和-的功能,尽量用2个函数执行。可事实上这段代码有一个细节错误。
我们知道char型是字符型存储变量,只能存储一个字节的变量,而这里的c==flag显然不能满足条件,更何况字符型变量应当用‘’括起来,字符串则应当用“”括起来。本人特地用dev-c++编写程序试了一下这段代码,果然编译报错。正确的调用方式,应当把char c改成字符串传递:
#include <stdio.h>
#include <cstdlib>
int count(char *c,int a,int b)
{
    if(c=="flag")  return a+b;
    else return a-b;
      
}
main()
{
      char *c="flag";
      int a=2,b=3,out;
      out=count(c,a,b);
      printf("%d",out);
      system("pause");
}
字符串是通过字符数组存储的,把char c,改成char *c,初始化成“flag”,函数部分再改成*c的传地址调用,再添上“”号就没有问题了。
以上程序通过Dec-C++编译通过。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

28#
发表于 2007-5-22 23:09:53 | 只看该作者
当场写的代码毕竟或多或少的有点小问题,一下就看出来了,厉害啊  看来你做测试能做的不错
回复 支持 反对

使用道具 举报

该用户从未签到

27#
发表于 2007-5-22 21:37:13 | 只看该作者
除了标题的问题,其实楼主还是蛮强的~~
不过我还是觉得你应该先跟老师单独问一下这个问题~~~
嘿嘿
回复 支持 反对

使用道具 举报

该用户从未签到

26#
发表于 2007-5-20 09:59:11 | 只看该作者
看到这个帖子,先是震惊后是欣慰再后是感慨!震惊是因为标题的严重性,欣慰是因为楼主的误解和大家认真学习的态度,感慨是因为说话的技巧.
回复 支持 反对

使用道具 举报

该用户从未签到

25#
发表于 2007-5-17 22:56:35 | 只看该作者

回复 #15 jane.su 的帖子

ding~~
我觉得首先是这位同学上课有疏忽吧
在没把问题搞清楚前,不好乱发表言论喔
学习精神值得褒奖,但是这种形式提出问题也不利于你以后的职业发展吧

建议你换标题吧
回复 支持 反对

使用道具 举报

该用户从未签到

24#
发表于 2007-5-17 22:21:13 | 只看该作者
而且很用功和用心...向他学习!
回复 支持 反对

使用道具 举报

该用户从未签到

23#
发表于 2007-5-17 22:20:56 | 只看该作者
我觉得楼主挺有勇气的...sdlkfj3
回复 支持 反对

使用道具 举报

该用户从未签到

22#
发表于 2007-5-17 19:50:02 | 只看该作者
原帖由 v_v 于 2007-5-16 18:44 发表
学习是应该这样很认真对待每个小的细节,很感慨有楼主这么仔细的同学了,呵呵...其实标题是有点不人情化,我们应该探讨问题是对的,不过也要注意下方法......

顶下~
回复 支持 反对

使用道具 举报

该用户从未签到

21#
发表于 2007-5-16 18:44:56 | 只看该作者
学习是应该这样很认真对待每个小的细节,很感慨有楼主这么仔细的同学了,呵呵...其实标题是有点不人情化,我们应该探讨问题是对的,不过也要注意下方法......
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2007-5-16 16:59:35 | 只看该作者
有这时间干点别的啊。不过楼主的细心应该被大家学习。不过态度嘛,应该改进一下。
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2007-5-16 16:44:05 | 只看该作者
大家不要打击楼主同学的积极性呀。的确这是一个因为误解flag意图的小失物。不过钻研精神和敢于站出来的勇气值得嘉奖。程序本身没有什么问题。最多是书写格式改下更加符合企业代码规范。if语句的每个分支最好都用花括号括起来哪怕只有一句。这是我工作后才学到的规范。楼主也就是缺少了些实践经验,否则就应该知道flag是一个多么被频繁使用的“程序练习变量名”了。
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2007-5-16 12:17:23 | 只看该作者
百家争鸣!好久没来论坛了!!大家可好??
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2007-5-16 11:34:51 | 只看该作者
这种探讨学习的气氛非常好
老师高兴还来不及
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2007-5-16 10:44:13 | 只看该作者

回复 #1 keenling 的帖子

我认为楼主并不是恃才傲物,他只是把自己的想法阐述了出来。

王琰老师意在传递变量名,可能楼主那点没听到,以为是复值字符串,但就他的理解他下面重写的这段代码也是对的,对于楼主的这种态度值得我们20期的学员借鉴。

只是有些跟老师不同的观点可以提出来探讨,在没有结果之前不能说谁对谁错。
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2007-5-15 22:27:44 | 只看该作者

替王琰老师平反——老师举例的那段code是正确的

我们20期的同学这么彪悍啊~~从标题看出来了。

我非常不赞成同学这样的态度,虽然能够认真思考是好事,可是做人还是低调些好。

为什么低调些呢?因为你上课没有认真听讲,嘿嘿,王琰老师举例的那段code没有错误。
你说的那个flag,实际上是INTEGERADD;课堂上,老师询问这段code有没有错误的时候,我怯生生地提出,那个INTEGERADD应该要+单引号的(现在看来,我提出的也是有问题的,因为如果加单引号更不对,因为是char型的);不过老师立即说,这个可以是别处定义过的;恩,想想确实,一般大写的基本都是提前定义过的全局变量,或者宏定义过的。

事情就是这样滴~~
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2007-5-15 21:06:51 | 只看该作者
楼主真是我们20期的人才啊,为楼主的认真而震撼sdlkfj5
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2007-5-15 15:48:35 | 只看该作者
楼主同学学习很认真阿,这样挺好的

不过这个标题我刚看到的时候,也咯噔了一下……汗一个 = =||
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2007-5-15 13:32:26 | 只看该作者

强烈建议楼主更改标题

这里的flag可以(或者说应该)理解成一个字符变量,当然最好的方式是用王琰老师在上面说的宏定义的方式,比如:
#define INTEGERADD 0
int add_sub(char flag,int a,int b)
{
    if(flag==INTEGERADD)  return a+b;
    else return a-b;
}
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2007-5-14 12:45:04 | 只看该作者
呵呵   ,  学的很认真阿  ,这些东西是应该在多去尝试发现,代码错误的话就是这些小细节引起的。
不过也觉得标题语气稍微重了点。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-5-14 10:10:00 | 只看该作者
原帖由 lovefei1027 于 2007-5-14 09:14 发表
flag只是一个变量啊老大
看清楚程序
变量和字符串这个王老师是不会搞错的吧


再简单的东西,只要是人都会有出错的机会,有错不奇怪,记得教训,改正错误就行了。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-18 22:46 , Processed in 0.081340 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表