Chinaunix首页 | 论坛 | 博客
  • 博客访问: 826510
  • 博文数量: 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() )
{
    ......
}
阅读(4197) | 评论(28) | 转发(0) |
给主人留下些什么吧!~~

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

Avlee
:) 也就是说可以这么写
a = b || c;

这个常在javascript脚本中判断一个变量是否定义,没想到也有人在C类语言中使用。

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

游客
还是我.
在MSDN上的原文:

Caution   Calling any of the Move functions throws an exception if the recordset has no records. In general, call both IsBOF and IsEOF before a Move operation to determine whether the recordset has any records. After you call Open or Requery, call either IsBOF or IsEOF.

网友评论2012-11-15 11:07:56

游客
为什么用MoveFirst之前需要先判断IsBOF呢?
如果是需要先判断IsBOF,哪为什么不判断IsEOF呢?
是不是两者需要同时判断呢?
请大侠们指点!

网友评论2012-11-15 11:07:42

京山游侠
有道理。
我以后就狂用星哥介绍的技巧,别人肯定会佩服我的,呵呵

网友评论2012-11-15 11:07:27

周星星
有时候需要第二次遍历,这就需要用到MoveFirst,用MoveFirst就需要先判断IsBOF。