C++ is famous for getting all the default behaviors wrong and for sometimes making demons fly out of your nose. Through 25 puzzles, from the useful to the outright weird, we explore some of C++’s most interesting quirks. How does initialization actually work? Do temporaries even exist? Why is `+!!”” ` a valid expression in C++? As you work through each puzzle, you will peel off some of the layers of complexity of C++, getting a fundamental understanding of how the language works. This will help you write better code and recognize issues more easily while debugging.
Each puzzle in the book is a complete, seemingly simple C++ program, but can you figure out the output for each, or will the answers stump you? Most of the programs compile and have deterministic, though sometimes surprising, output. Some might, however, have undefined behavior, where anything can happen, including making demons fly out of your nose! Yet others might have unspecified behavior with output that is not completely deterministic; we just know nothing as bad as nasal demons will happen.
All puzzles are accompanied by detailed discussions, taking a look under the hood at what exactly is going on to help you understand more about C++’s unexpected behaviors, as well as fundamental concepts like initialization, overload resolution, and implicit conversions. For the non-deterministic cases, we’ll explore some typical behaviors one can expect to see in practice, what causes them, and why they shouldn’t be relied on.
After working through the book, you’ll have tools and techniques to help you write better and safer code, and a better understanding of the fundamentals of the language, the background for some of C++’s apparent weirdness, and a better feel for identifying bugs and unsafe code in your own programs.
What You Need:
The book assumes basic knowledge of C++. If you want to run the programs yourself, you can use either a local C++ compiler or the online compilers at https://godbolt.org.
Editorial Reviews
Review
Select Guide Rating
About the Author
Anders Schau Knatten has been a professional programmer since 2001, using a variety of languages. He is the author of the online C++ Quiz and C++ on a Friday and has spoken about C++ at conferences like CppCon, Meeting C++, NDC TechTown, and others. Anders is on Twitter as @knatten and @CppQuiz, as well as on Mastodon as @knatten.
You thought you knew C, but can you solve 25 puzzles in this popular programming language? Noted C programmer and author Dan Gookin provides a series of pointed questions, puzzles, and problems to keep your C programming skills sharp. Each one will provide insight into various aspects of handling strings, numeric operations, and other activities, giving you techniques to take the best advantage of all C has to offer. Challenge yourself, and get to know some powerful tricks and details for writing better, faster, more accurate C code.
Most C programming books present the information sequentially, teaching you the right way to code and only rarely describing what could go wrong. In this book, the goal is to find out what did go wrong – or what potentially goes right. Explore interesting and unusual programming concepts and approaches with small, to-the-point, programs and exercises. Hone your C programming skills and expand your knowledge.
By working through the brain teasers in this book, you’ll fill in gaps in your knowledge and work with advanced concepts such as pointers and recursion. All of the teaser topics were selected to give you food for thought, explaining the technical details behind each puzzle. Look at a code sample and try to guess what output it will give. Code it yourself and see the result. Is it what you expected? Then read the author’s lighthearted explanation of exactly why the language does what it does, and how you can take advantage of it. You’ll come away with a much better understanding of how the language works, and how to use it for efficient and effective programming.
What You Need:
You need to know the basics of coding in C, and have an environment for compiling and executing your C code. Any Windows, MacOS, or Linux system with a C compiler does the job. Use the terminal window for traditional C programming. Or obtain an Integrated Development Enviornment (IDE) such as Visual Studio Code, which contains all the software tools you need: Editor, Compiler, and Output.
Editorial Reviews
About the Author
Dan Gookin has been writing about technology for over 40 years. Perhaps the most famous of his over 170 titles is the original DOS For Dummies, published in 1991, with millions of copies in print in over 30 languages. Beyond being a successful technology author, Dan serves as an instructor for the online training company LinkedIn Learning.