w514640 发表于 2012-4-28 08:34:54

C语言求指导!当程序太多的“IF”怎么办!感觉没层次感!

本人初来咋到,现在还是一名大三学生!由于前2年荒废了学习!基础不好!好不容易发现这么一个好的平台!希望可以借此机会提高自己!
所以在这里还请各位前辈帮帮小弟一把!本人虚心好学!{:lol:}
C语言求指导!当程序太多的“IF”怎么办!感觉有时候分不清那个“ELSE”和他对应!需要多重循环的时候用什么语句最好!感觉没层次感!

shandian 发表于 2012-4-28 08:36:38

if能实现多重循环?

ada1983 发表于 2012-4-28 08:40:32

写的时候对对齐,层次感不就有了......
实在没办法,还可以加注释在一边......

dragon_hn 发表于 2012-4-28 08:57:05

Tab键.
在VC下可以先Ctrl+A,然后Alt+F9.不过有些对齐会出现问题.

wuxi_stl 发表于 2012-4-28 09:08:50

流程图辅助

brahen 发表于 2012-4-28 09:10:32

switch语句?

mcujack 发表于 2012-4-28 09:14:49

也有同样的疑问,一堆的if else

shinehjx 发表于 2012-4-28 09:16:51

花括对齐。
if 是C使用率最高的,如果没有if真不知程序该怎么写{:lol:}

lengqing1309 发表于 2012-4-28 09:26:17

状态机、switch

utopiaprince 发表于 2012-4-28 09:30:19

推荐用source insight编写代码,然后用astyle插件来定义代码规范,可以自动把代码重新编辑一次

korgo 发表于 2012-4-28 09:31:19

lengqing1309 发表于 2012-4-28 09:26 static/image/common/back.gif
状态机、switch

switch可没有if那样可以进行优先判定哦!

whhityang 发表于 2012-4-28 09:33:26

korgo 发表于 2012-4-28 09:31 static/image/common/back.gif
switch可没有if那样可以进行优先判定哦!

分支在前不就是优先判定了。

chenenzhi 发表于 2012-4-28 09:41:03

用UE不是可以折叠吗?一折叠就知道那个对应那个了。前提是都有括号。

usingavr 发表于 2012-4-28 09:49:28

if 不要超过 3层, 可以把一系列操作定义成函数,减少if 的层数,增强阅读性

raohao101 发表于 2012-4-28 09:56:12

格式要对齐,

bailangcn 发表于 2012-4-28 09:56:42

if
else if
else if
else

Iron_Man 发表于 2012-4-28 10:12:07

见过...一堆if else...本人 if else 最多嵌套不超过3次,要么重写,要么。。。多写几个函数。。。

1314hong 发表于 2012-4-28 10:29:56

状态机很好用,可以实现多重循环,多级菜单。

luluxiu 发表于 2012-4-28 10:44:13

if和else或ifelse必须搭配使用;代码需要优化,先考虑switch-case,再if-else。最最后再考虑goto。推荐本书:《C语言程序设计:现代方法(第2版)》 - 金(K.N.King);

liuhengpeng123 发表于 2012-4-28 10:47:00

if选择语句,建议多看书先

黑暗深处 发表于 2012-4-28 11:38:15

太多IF就用switch语句咯
其实写代码养成良好的缩进习惯,可读性也很高

seazhui 发表于 2012-4-28 11:41:21

缩进
良好的缩进是很重要的~~~

w514640 发表于 2012-4-29 22:11:30

utopiaprince 发表于 2012-4-28 09:30 static/image/common/back.gif
推荐用source insight编写代码,然后用astyle插件来定义代码规范,可以自动把代码重新编辑一次 ...

可以发一下source insight的连接么!刚刚百度看了一下!不过没怎么了解!新手不知道!还请前辈指导!讲讲你的感受!和技巧!谢谢啦!

w514640 发表于 2012-4-29 22:12:39

luluxiu 发表于 2012-4-28 10:44 static/image/common/back.gif
if和else或ifelse必须搭配使用;代码需要优化,先考虑switch-case,再if-else。最最后再考虑goto。推荐本书 ...

有书的PDF么!来个链接!谢啦!

w514640 发表于 2012-4-29 22:17:52

usingavr 发表于 2012-4-28 09:49 static/image/common/back.gif
if 不要超过 3层, 可以把一系列操作定义成函数,减少if 的层数,增强阅读性 ...

这建议老师也说过!想请教一下函数定义在头文件里和定义在MAIN()上面有上面区别么!我也觉得是这样比较好!可是还是有些生疏感觉!可以有什么让我从主观上改变我的编程思路么!这个是我参考别人的不过MIAN(0主函数都是我自己写的!感觉好乱!

automaticdai 发表于 2012-4-29 22:19:04

封装成子函数。

w514640 发表于 2012-4-29 22:20:46

automaticdai 发表于 2012-4-29 22:19 static/image/common/back.gif
封装成子函数。

刚刚有前辈教过我了!不过还是谢谢啦!{:lol:}

happyhls 发表于 2012-4-29 23:22:04

子函数,宏定义,状态机。。。得慢慢来,写多了,想得多了,水平就慢慢上去了。

yuxinxb13 发表于 2012-4-29 23:34:52

if(i==0)
{
       if(j==0)
       {
               if(k==0)
               {
                      ......
               }
               else
               {
                     ......
               }
       }
       else
       {
            ......
       }
}
else
{
       .....
}

只有是同一级的if else 才让他们在同一条垂直线上

w514640 发表于 2012-4-30 08:35:13

yuxinxb13 发表于 2012-4-29 23:34 static/image/common/back.gif
if(i==0)
{
       if(j==0)


真心懂了!{:loveliness:}

luluxiu 发表于 2012-5-7 17:49:13

w514640 发表于 2012-4-29 22:12 static/image/common/back.gif
有书的PDF么!来个链接!谢啦!

我这好书都是买的,电子版没感觉
基础好了再看《高质量C编程指南》

stdio 发表于 2012-5-7 18:25:42

这个好象要练内功啊,代码的结构密切关系设计思路以及整个软件的结构,要写出unix那么优美的代码,数据结构和操作系统,要反复咀嚼。。。

leicai05 发表于 2012-5-7 18:28:01

是心乱了,程序不乱

cndavy 发表于 2012-5-7 19:30:11

短期记忆好,没问题的,要记住 if的else在哪里,如果不行,尽量层次化,再不行编辑器辅助,如果还不行,说明不是编程的料。

w514640 发表于 2012-5-8 20:24:53

luluxiu 发表于 2012-5-7 17:49 static/image/common/back.gif
我这好书都是买的,电子版没感觉
基础好了再看《高质量C编程指南》

谢谢啦!前辈懂OV系列的芯片么!本人最近要做一个基于FPGA的摄像头!有点无头绪!

smilelb 发表于 2012-5-9 00:06:34

建议在写代码的时候不要直接在编译软件里面写,可以先在更智能的编辑工具里面编写代码,例如UltraEdit等。

shamiao 发表于 2012-5-9 02:47:39

本帖最后由 shamiao 于 2012-5-9 03:00 编辑

看懂好办,缩进,然后在每个endif处标明对应的是哪个if。
if或者for套的层数太多了一定是程序结构有问题。
一般3层就该想想,4层除非不得已不能用。
5层以上必须推翻重来。铁律,死规则,没余地,不商量,想都不用想。

程序结构必须注意,光“可行”不够,必须好读好改。
高级语言的设计思想就是牺牲代码效率换取编程效率嘛。
从这个意义上讲,写高级语言的程序,只是能运行那连及格都算不上。
逻辑一定要显而易见。至少要达到本人一个月后再看能懂的程度。

至于函数在哪写,答案是确定的:
①跨文件公用的函数,声明一定在.h里,代码一定在.c里。定义和实现分开,习惯啊习惯。
②文件内私有函数,声明和定义全在.c里。
原则:.h用于互相交流函数的调用方法,而绝对不可以暴露函数的内部逻辑!

另外,要做啥??基于FPGA的摄像头?!
FPGA是硬件并行的关系,C是由CPU主持串行执行的关系。
运作方式不一样,代码干脆就是两种完全不同的思想,碰到的困难也完全不同。
这根本不是一般的编程语言之间,只有点语法区别的层面。
所以求您了,千万别FPGA和C一起学,生不如死有木有啊!

tacbo2012 发表于 2012-5-9 04:47:35

写对齐了,又有层次感又美观!

w514640 发表于 2012-5-9 07:37:58

shamiao 发表于 2012-5-9 02:47 static/image/common/back.gif
看懂好办,缩进,然后在每个endif处标明对应的是哪个if。
if或者for套的层数太多了一定是程序结构有问题。
...

可是没有办法啊!差一个层次也得学啊!现在不学到以后学恐怕会有些晚!在学校的时间远比出去工作的时候时间来的更宽裕!所以前辈恳请帮帮小弟啦!不过你说的这段话确实受益匪浅!还是在这里谢谢啦!{:loveliness:}

junrong 发表于 2012-5-9 08:31:20

写的时候该对齐的对齐...在结构上增加层次感吧

luluxiu 发表于 2012-5-9 09:11:58

w514640 发表于 2012-5-8 20:24 static/image/common/back.gif
谢谢啦!前辈懂OV系列的芯片么!本人最近要做一个基于FPGA的摄像头!有点无头绪! ...

这个没玩过,等你玩会也是前辈了,有进展就一块在坛子里讨论吧

wychao 发表于 2012-5-9 10:48:30

参考华为的软件编写规范

单片机玩C++ 发表于 2012-5-9 10:58:20

函数。、

一个函数如果超过10行,就要考虑是否需要写子函数。

科技大 发表于 2012-5-9 11:01:27

新手路过~~
页: [1]
查看完整版本: C语言求指导!当程序太多的“IF”怎么办!感觉没层次感!