Chinaunix首页 | 论坛 | 博客
  • 博客访问: 988071
  • 博文数量: 158
  • 博客积分: 4380
  • 博客等级: 上校
  • 技术积分: 2367
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-21 10:45
文章分类

全部博文(158)

文章存档

2012年(158)

我的朋友

分类: C/C++

2012-11-15 11:04:14

C/C++语言中 if( a>'9' ) a+=7 等同于 a>'9'?(a+=7):0 等同于 a>'9'&&(a+=7) 等同于 a<='9'||(a+=7);

if( a>'9' ) a+=7 清晰易懂,所以能用 if 的情况下就不要使用其他取巧的方法,但也应该知道if只能作为语句,而不能作为表达式,比如一个遍历ODBC记录集的代码,使用 if 语句只能如下:

CRecordset rs;
...
if( !rs.IsBOF() )
{
    for( rs.MoveFirst(); !rs.IsEOF(); rs.MoveNext() )
    {
        ......
    }
}

而使用 || 可以如下:

for( rs.IsBOF() || rs.MoveFirst(); !rs.IsEOF(); rs.MoveNext() )
{
    ......
}
阅读(5049) | 评论(28) | 转发(0) |
给主人留下些什么吧!~~

网友评论2012-11-15 11:10:25

周星星
我这几天非常忙,不再有时间回复跟贴了,sorry。

1. 如果我看到一个表达式(a>'9'||a='9')我一定会以为是(a>'9'||a=='9')而不是if (a<='9') a = '9'  
--- 如果这样,你应该好好反省了,这不是一个值得炫耀的习惯。

2. 而且,楼主的术语不规范,这个不叫“猝死式”,而是“短路”
--- 其实叫什么都无所谓,我也没听说“短路”。

网友评论2012-11-15 11:10:10

leojay
同意楼上的,两者不完全相同。
而且这种方法最好不要使用,
如果我看到一个表达式(a>'9'||a='9')我一定会以为是(a>'9'||a=='9')而不是if (a<='9') a = '9'

而且,楼主的术语不规范,这个不叫“猝死式”,而是“短路”,我看的原版的书里都写的是"short circuit"。而且我google过了,好像并没有“猝死式”这个术语

网友评论2012-11-15 11:09:41

viecks
C/C++语言中 if( a>'9' ) a+=7 等同于 a>'9'?(a+=7):0 等同于 a>'9'&&(a+=7) 等同于 a<='9'||(a+=7);

等同于?真的对吗?
三元操作符"bool?x:y"要求x、y的类型一致、或可隐式转换!
其它三种表示无此要求!

网友评论2012-11-15 11:09:04

lxf
萃死都不知道还问个啥

网友评论2012-11-15 11:08:51

Avlee
说笑了