C++ Brain Teasers

Exercise Your Mind

Anders Schau Knatten ,

 
Tap to preview
lazy-nofade placeholder

About the eBook

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.

Show more



In The Press


About the Author


  • Publisher:
  • Published: ; Copyright:
  • ISBN:
  • Edition:
  • Title:
  • Series:
  • Author:
  • Imprint:
  • Language:
  • Number of Pages:  [disclaimer] Page count shown is an approximation provided by the publisher. The actual page count will vary based on various factors such your device's screen size and font-size.

Read online

You can read this ebook online in a web browser, without downloading anything or installing software.

Download file formats

This ebook is available in file types:

This ebook is available in:

After you've bought this ebook, you can choose to download either the PDF version or the ePub, or both.

DRM Free

The publisher has supplied this book in DRM Free form with digital watermarking.

Required software

You can read this eBook on any device that supports DRM-free EPUB or DRM-free PDF format.

Digital Rights Management (DRM)

The publisher has supplied this book in encrypted form, which means that you need to install free software in order to unlock and read it.

Required software

To read this ebook on a mobile device (phone or tablet) you'll need to install one of these free apps:

To download and read this eBook on a PC or Mac:

  • Adobe Digital Editions (This is a free app specially developed for eBooks. It's not the same as Adobe Reader, which you probably already have on your computer.)

Limits on printing and copying

The publisher has set limits on how much of this ebook you may print or copy. See details.

  • {{ format_drm_information.format_name }} unrestricted {{ format_drm_information.format_name }} {{format_drm_information.page_percent}}% pages every day{{format_drm_information.interval}} days {{ format_drm_information.format_name }} off
Read Aloud
  • {{ read_aloud_information.format_name }} on {{ read_aloud_information.format_name }} off
Categories
  •  > 
ISBNs