C 语言新手 , 练习代码求指导 . 用 if 用乱了 .

2014-07-29 22:55:07 +08:00
 GPU
https://gist.github.com/p0w3r-/e518ff71c6a9d68c3981

这是代码 .

搞来搞去 编译不出来 .并且看不懂编译出错后返回的英文.
6349 次点击
所在节点    程序员
81 条回复
acros
2014-07-30 08:56:40 +08:00
@acros
namespace前面忘了写std;缺少封号;大小写不对;夹杂中文字符...能出错的地方多了,而且以前的编译器警报也没现在的准确。
lu18887
2014-07-30 09:01:23 +08:00
楼主值得鼓励,不懂就问,没有错!不要气馁!
roychan
2014-07-30 09:02:48 +08:00
呃……为什么不用 switch 呢?
byron
2014-07-30 09:17:43 +08:00
@roychan 还没学到哪里。
Geeker
2014-07-30 09:18:23 +08:00
很多人在不会的时候连问的勇气都没有!每个人都是这么过来的。加油
rulerstorm
2014-07-30 09:29:03 +08:00
写得还可以啊,这明显是小朋友的炫耀贴~
frankzeng
2014-07-30 09:36:14 +08:00
result >= 80 && result < 90 ,没这么写的啊,明显是result<90是多余的,你想啊,如果result=85,第一个判断肯定为假,第二个>=80就为真的,后面的&& result<90就是多余的
GPU
2014-07-30 09:37:15 +08:00
@rentaro 我用的是ubuntu 的GCC 随便装的环境 , 我编译好运行成功了 才发现你说的没有添加 分号

@Ricepig 我数学略渣 .要慢慢意会一下.哈.

@jesse_luo 是的,上面有人也提过我 , 在#28里

@em70 是的呢,昨晚找到了一个百度文库有人分析的常见错误可以看啊可能.

@abscon 你这个错误是不是缺少花括号了?


@bombless @lu18887 @Geeker 谢谢你们鼓励 .我会努力的 , 恩!
GPU
2014-07-30 09:40:08 +08:00
@frankzeng 原本是" result < 90 && result >= 80 " 这样子写的,然后编译出来结果不对就掉过来了,然后也没有想太多成立不成立,结果对就可以,然后就发上来了.

@rulerstorm 这算是损还是什么呢 ,^ ^ .
zuo
2014-07-30 09:40:36 +08:00
@frankzeng 猛然发现确实,尼玛,以前学习的时候怎么就没有想到了
ljcarsenal
2014-07-30 09:48:02 +08:00
@crab yuange真的已经达到十分吊的地步了嘛。。。。。不过他可真是毫不谦虚啊。。。那些大神也是一直吹捧他
frankzeng
2014-07-30 09:48:07 +08:00
@zuo 逻辑上没有什么区别,就是代码看起来不够优雅而已。

@GPU 这C/C++编译出错容易解决了,难的是跑出来的结果不是你想要的,调试才麻烦。
xavierskip
2014-07-30 09:52:56 +08:00
LZ web app都能写,这点C搞不定?
shawngao
2014-07-30 09:56:10 +08:00
} else if ( result >= 80 && result < 90 ){

这个“ && result < 90 ”没必要吧
precisi0nux
2014-07-30 10:00:53 +08:00
这样来问很浪费时间,不如找本正统的教材看。
kid177
2014-07-30 10:13:19 +08:00
这样低级的错误,感觉还是LZ没有仔细去学吧。

不过也不能怪LZ,想当初我int main写成int mian硬是调了1个下午
auser
2014-07-30 10:27:17 +08:00
@yukirock 标准规定main函数可以不显示return的

C中的函数要是没有参数,建议加上void,例如:
long random(void);
写成:
long random()
这种形式编译器无法帮助检查错误的参数传递

吹毛求疵下:
result是否应该有一个合理的范围呢?比如[0,100]
如果scanf时候输入了非法字符怎么办?[好多年没用过scanf这个函数了……这里楼主可以暂时先检查scanf的返回值]
abscon
2014-07-30 10:34:15 +08:00
@GPU 不是我的错误,是我同学的错误。错误不在于缺少花括号。如果你坚持要花括号的话我给你花括号。你看看,能看出错误在哪里不。看不出的话说明你的那个错误意识还没有纠正过来(代码是动态的过程,不是静态的状态)

#include <stdio.h>

int main()
{
char ch;
scanf( "%c",&ch );
if( ch == 'a' ) {
ch = 'A';
}
if( ch == 'A' ) {
ch = 'a';
}
printf( "%c\n", ch );
return 0;
}
abscon
2014-07-30 10:35:32 +08:00
@livid 抗议编辑器自作主张去掉了排版用的空格
sampeng
2014-07-30 10:36:59 +08:00
你需要一本正规的教材。靠猜是没戏的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/125160

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX