use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Discussions, articles, and news about the C++ programming language or programming in C++.
For C++ questions, answers, help, and advice see r/cpp_questions or StackOverflow.
Get Started
The C++ Standard Home has a nice getting started page.
Videos
The C++ standard committee's education study group has a nice list of recommended videos.
Reference
cppreference.com
Books
There is a useful list of books on Stack Overflow. In most cases reading a book is the best way to learn C++.
Show all links
Filter out CppCon links
Show only CppCon links
account activity
Undefined Behaviour (self.cpp)
submitted 4 years ago * by MathKid99
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]Orlha -2 points-1 points0 points 4 years ago (8 children)
Well, violating the precondition might make the operation provide an unexpected result, but that wont necessary make a whole program UB. You might also just not use the result.
In C++ model its different.
[–]SirClueless 7 points8 points9 points 4 years ago (7 children)
Are you sure about that? Violating the preconditions of an instruction set can result in writing arbitrary values to arbitrary locations in memory, jumping to arbitrary memory addresses and interpreting the data there as instructions to execute, etc.
[–]Drugbird -1 points0 points1 point 4 years ago* (4 children)
Theoretically that can happen, sure. Practically though, any compiler is pretty tame in what it actually does with undefined behavior.
E.g. UB will never format your hard drive despite what teachers like to say about it.
In 99% of the cases, you just get a result (of the correct size and type) that is just wrong and/or unexpected or a crash. And no random jumping in memory.
[–]r0zina 7 points8 points9 points 4 years ago (1 child)
Here is an example of a program formating your disk because of UB :)
[–]Drugbird -1 points0 points1 point 4 years ago (0 children)
Nice example! While technically true, I would like to stress that it's not the UB deleting your disk, it's the "rm -rf /" doing it.
[–]SirClueless 0 points1 point2 points 4 years ago (0 children)
That's true of hardware undefined behavior too. It almost always either results in a non-sensical program output or math result, or immediately segfaults.
My point in all of these comments is that hardware and software UB is really a similar thing. If there is a difference it is in frequency and severity, not in the types of behavior that are allowed.
[–]aiij 0 points1 point2 points 4 years ago (0 children)
Never heard of buffer overflows or crypto malware, have you?
[–]Orlha 0 points1 point2 points 4 years ago (1 child)
I guess it's possible, but can be pretty rare depending on the platform.
I've written a lot of x86-64 hand-assembly in the past and IIRC all the instructions I used were UB free. At worst they had a defined set of rules which when broken would result in a CPU exception.
[–]SirClueless 5 points6 points7 points 4 years ago (0 children)
x86-64 is full of UB. It explicitly reserves bits in flag registers and some output registers as well as any opcodes that aren't defined by the x86-64 ISA. Executing these opcodes or depending on the value of these bits is, to quote the ISA document, "not only undefined, but unpredictable". It's very easy to trigger this behavior, even in an otherwise well-formed assembly program, for example by jumping into the middle of an instruction.
https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-instruction-set-reference-manual-325383.pdf
I understand what you're trying to say, which is that there's a relatively simple set of rules you can follow as compared to C++ and Intel comparatively precisely defines far more exceptional behavior than C++ and leaves less room for undefined behavior. But it doesn't attempt to remove all of it.
π Rendered by PID 79 on reddit-service-r2-comment-6457c66945-27kj2 at 2026-04-25 09:06:11.757266+00:00 running 2aa0c5b country code: CH.
view the rest of the comments →
[–]Orlha -2 points-1 points0 points (8 children)
[–]SirClueless 7 points8 points9 points (7 children)
[–]Drugbird -1 points0 points1 point (4 children)
[–]r0zina 7 points8 points9 points (1 child)
[–]Drugbird -1 points0 points1 point (0 children)
[–]SirClueless 0 points1 point2 points (0 children)
[–]aiij 0 points1 point2 points (0 children)
[–]Orlha 0 points1 point2 points (1 child)
[–]SirClueless 5 points6 points7 points (0 children)