C语言的条件表达式过长,如何换行?

[复制链接]
12391|7
 楼主| myic200610 发表于 2008-9-23 23:21 | 显示全部楼层 |阅读模式
请教:

if( (f.min==1)||(ui_temp>ui+3)||(ui_temp<ui-3) || ((P81HisState)&&(!P81CurState)) || ((P82HisState)&&(!P82CurState)))

在上面的if语句中,条件表达式过长,请问怎么分行?

谢谢!
HWM 发表于 2008-9-24 09:04 | 显示全部楼层

尽量断在优先级最低的操作符前或后,且排整齐。

John_Lee 发表于 2008-9-24 11:08 | 显示全部楼层

GNU标准建议

在逻辑运算符前换行

if( (f.min==1)||(ui_temp>ui+3)||(ui_temp<ui-3)
        || ((P81HisState)&&(!P81CurState)) || ((P82HisState)&&(!P82CurState)))
清风一士 发表于 2008-9-24 12:53 | 显示全部楼层

这样行不行?

if(       (    f.min==1         ) ||
          ( ui_temp>ui+3  ) ||
          ( ui_temp<ui-3  ) || 
          (  ( P81HisState  )&&
             ( !P81CurState )   ) || 
          (  ( P82HisState  )&&
             ( !P82CurState )   )
   )
linqing171 发表于 2008-9-24 13:44 | 显示全部楼层

c语言是块语言,不是行语言,可以随便换行。

不过字符串换行的时候要注意一下,不同的编译器要求不一样。像BCB里面一般是这样:

const char * a="aaa"
"bb"
"ccc"
" "
编译器会自动加个‘’ 在最后。

C里面的宏定义是和basic AHDL等语音一样的,必须一行是一句。加个反斜杠转义一下。

C语言可以多条语句放一行里,比如 i=0;j=1; 但是行语言就不行了,中间必须加个分隔符比如 冒号 来区分,这是两条语句。
 楼主| myic200610 发表于 2008-9-24 22:22 | 显示全部楼层

RE:

非常感谢大家的指点!

2楼、5楼、6楼说的都试过了,全部编译通过!

太棒了,呵呵!
hotpower 发表于 2008-9-25 14:49 | 显示全部楼层

俺可没说什么~~~俺是5楼的学生~~~

 楼主| myic200610 发表于 2012-5-6 11:52 | 显示全部楼层
用反斜杠“\”可以,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

536

主题

2587

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部