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

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

冷剑魂
使得if语句成为表达式的一个技巧
冷剑魂引用了该文章,地址:http://blog.csdn.net/guo_wangwei/archive/2006/01/17/581554.aspx

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

周星星
你要我解释什么?

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

hygol
for语句中的第一分句无论是true或者false,都会执行循环体的。难道没有人试着编译一下吗?星星兄给解释一下。

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

xawi2000
如果我看到一个表达式(a>'9'||a='9')我一定会以为是(a>'9'||a=='9')而不是if (a<='9') a = '9' .

这是个错误的写法,这个地方应该写成(a>'9'||(a='9')),
因为||运算符的优先级比=高

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

leojay
1. 汗,显然我这不是炫耀我会看错是很厉害的表现……,只是想说,这种技巧不大好,会误导人的,尤其团队开发的时候,会被骂的……

2. 术语的用处就是交流方便,如果大家一人一套术语,交流就有问题了,GoF的<<design patterns>>就说过了术语的重要性哦。呵呵。

你可以去google一下C++ "short circuit"或是c++ 逻辑 "短路"会发现大家都是这么叫的 ^.^