C++ 之and, and_eq, or, or_eq, xor, xor_eq, not, not_eq操作符

在C++ 有一些不太受关注的关键字,这些关键字也是操作符:

and, and_eq, or, or_eq, xor, xor_eq, not, not_eq, bitand, bitor

and

表示逻辑与操作, 是C++原有操作符 && 的等效替换

bool success1 = execute_some_task();
bool success2 = execute_another_task();
if(success1 and success2)
{
	std::cout << "two tasks have been done successfully" << std::endl;
}

and_eq

表示相与并赋值,等价于 &= 操作符

unsigned char a = 0xFE;
unsigned char b = 0x02;
b and_eq a; // 等价于 b &= a;
std::cout << "new b is " << b << std::endl;

or

逻辑或, 等价于 || 操作符

int year = 2017;
//等价于 bool result = a % 400 == 0 || a % 400 != 0 && a % 4 == 0; 
bool result = a % 400 == 0 or a % 400 != 0 and a % 4 == 0;  

or_eq

相或并赋值,等价于 |= 操作符

unsigned short port = 0x0000;
port or_eq 0xFFEE; //等价于 port |= 0xFFEE;

xor

逻辑异或, 登记于 ^

int a = 0x5A xor 0xCE; //等价于 int a = 0x5A ^ 0xCE;

xor_eq

相异或并赋值

int a = 10;
int b = 15;
a xor_eq b xor_eq a xor_eq b; //等价于 a ^= b ^= a ^=b; 

not

逻辑非, 等价于操作符 !

bool islast = true;
if(not isLast)  //等价于 if(!isLast)
{
	// todo
}

bitand, bitor

与and,or类似,不过是按位操作, bitand等价于& , bitor 等价于 |

Product Description The author uses practical, concise code examples to illuminate a useful programming stratagem or warn against a dangerous practice. Readers will come away with a better understanding of how C++ is used in the real world. From the Inside Flap In the hands of an expert, C++ helps designers and programmers build systems that are modular, maintainable, and fast. To the novice, however, the size of the language can be intimidating. There are a lot of features in C++ and it takes some experience to learn which ones are appropriate for any situation. This book is intended to enhance and expedite that learning process. Most successful C++ programmers cannot recite chapter and verse from the language rules; instead, they have acquired a set of idioms and techniques that have worked well for them. Our goal is to help the C++ novice learn those idioms that have been most useful in practice. We also point out some of the most common pitfalls. We do not try to cover the entire language and we leave the ultra-precise definitions of language semantics to the reference manuals. Instead, we concentrate on helping the reader build programs that can be understood by someone who is not a C++ language lawyer. We not only discuss techniques for making programs elegant and fast; we also show how to make them easier to understand and maintain. Acknowledgements Almost none of the ideas and programming idioms in this book are my invention. My goal has been to present, in a way that allows novice C++ programmers to learn them quickly, what I consider to be the most important strategies and tactics I have learned from others in the eight years I have been using C++. Some of these lessons were learned by studying actual development projects as they moved from C to C++; others came from discussions with talented individuals. Many of the best ideas on templates and library design, including the ideas behind many of the container classes in this book, came from classes in the USL Standard Components that were originally designed by Martin Carroll, Andrew Koenig, and Jonathan Shopiro. I claim exclusive ownership of any errors in my versions. Andrew Koenig was a valuable resource as the local C++ language lawyer. The participants in the "C++ Strategies and Tactics" seminars I presented at several conferences helped inspire this book and refine its ideas. Other important ideas came from Tom Cargill, John Carolan, Jim Coplien, Mark Linton, Gerald Schwarz, and of course Bjarne Stroustrup, who also invented the C++ programming language that made the book possible in the first place. Brian Kernighan read several drafts of this book, and his excellent feedback has been a lot of help. I would also like to thank David Annatone, Steve Buroff, Tom Cargill, Bill Hopkins, Cay Horstman, Lorraine Juhl, Peter Juhl, Stan Lippman, Dennis Mancl, Scott Meyers, Barbara Moo, Lorraine Weisbrot Murray, Bjarne Stroustrup, Clovis Tondo, Steve Vinoski, and Christopher Van Wyk for their comments on early drafts of this book. Lorraine Weisbrot Murray also contributed the encouragement, understanding, support, and love that helped make the entire effort feasible. Rob Murray
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值