| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 546 人关注过本帖
标题:写几条简单的语句有点糊涂了。。。
只看楼主 加入收藏
wengege
Rank: 2
等 级:论坛游民
帖 子:148
专家分:93
注 册:2012-7-23
结帖率:89.47%
收藏
已结贴  问题点数:10 回复次数:9 
写几条简单的语句有点糊涂了。。。
      VoiceBuff_Init();    //A
      if( GPS_Status )
      {      
            Voice_Buff[0] = GPS;
            Voice_Buff[1] = OK_SIGNAL;//B      
      }
      else
      {
            Voice_Buff[0] = GPS;
            Voice_Buff[1] = NO_SIGNAL; //C   
      }
      Voice_Buff[2] = MAIN; //D

经常写这样的语句,但是每次都感觉怪怪。语句A首先得执行 只有语句D 每次不知道是单单的放最下面合适还是放在语句B,C下面合适。 放最下面感觉可读性没那么好。。 大家说说看法该怎么放。。。
2012-11-24 15:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
写3行就可以了

授人以渔,不授人以鱼。
2012-11-24 15:57
wengege
Rank: 2
等 级:论坛游民
帖 子:148
专家分:93
注 册:2012-7-23
收藏
得分:0 
      VoiceBuff_Init();    //A
      Voice_Buff[0] = GPS;
      if( GPS_Status )
      {      
            Voice_Buff[1] = OK_SIGNAL;      
      }
      else
      {
            Voice_Buff[1] = NO_SIGNAL;     
      }
      Voice_Buff[2] = MAIN; //B
嗯, 写多了是增加代码量。 而且这里的没什么逻辑。。

打好基础,学会站在巨人的肩膀上!
2012-11-24 16:02
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
if()比三目运算符的效率稍微高一点,如果觉得这里的if()不好看,就用三目运算符,清晰一点。

授人以渔,不授人以鱼。
2012-11-24 16:07
wengege
Rank: 2
等 级:论坛游民
帖 子:148
专家分:93
注 册:2012-7-23
收藏
得分:0 
嗯, 试试看了, 多谢版主指点。。。

打好基础,学会站在巨人的肩膀上!
2012-11-24 16:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
最好的表述形式是这样:
程序代码:
VoiceBuff_Init();
Voice_Buff[0] = GPS;
Voice_Buffer[1] = GPS_Status ? OK_SIGNAL : NO_SIGNAL;
Voice_Buff[2] = MAIN;


如果表达式复杂,用函数也要把它写成这样。

授人以渔,不授人以鱼。
2012-11-24 16:24
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:5 
以下是引用TonyDeng在2012-11-24 16:07:06的发言:

if()比三目运算符的效率稍微高一点,如果觉得这里的if()不好看,就用三目运算符,清晰一点。

好像没啥区别罢
2012-11-24 16:26
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
多一条机器指令的,你反汇编了看看就知道。事实上编译器在编译时就是把三目运算符展开为if(),不过那是编译器自己做的,在给人看的代码中未必要自己展开,视可读性而定。在旧式编译器中,没有bool类型,不需要把条件表达式的运算结果表达为0或1,新的编译器要多这么一条强制指令,不过这开销根本上可以忽略。像楼主这样的需求,用三目运算符来表达是很好的,但如果写出来太多?:就不好了,因为与其每一条?:都展开,不如一次过展开为完整的单独if()。

[ 本帖最后由 TonyDeng 于 2012-11-24 16:40 编辑 ]

授人以渔,不授人以鱼。
2012-11-24 16:33
wengege
Rank: 2
等 级:论坛游民
帖 子:148
专家分:93
注 册:2012-7-23
收藏
得分:0 
回复 6楼 TonyDeng
temp = a? b() : c();  那样的话是不是就不需要 if else 语句了 呵呵?

打好基础,学会站在巨人的肩膀上!
2012-11-24 16:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
是的

授人以渔,不授人以鱼。
2012-11-24 16:40
快速回复:写几条简单的语句有点糊涂了。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020395 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved