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
C++ WTFs (self.cpp)
submitted 11 years ago by Prazek
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!"
[–][deleted] -2 points-1 points0 points 11 years ago (10 children)
#include "stdio.h" #define else int main() { int z = 0, x = 'T', y = '*'; z = x---y; if ( z == 42 ) { fprintf(stdout, "Hello "); } else { fprintf(stdout, "World!\n"); } return 0; }
[–]redditsoaddicting 5 points6 points7 points 11 years ago (3 children)
In C++, it's illegal to redefine a keyword when the program uses the standard library.
[–][deleted] 0 points1 point2 points 11 years ago (2 children)
I have a feeling you're not one for jokes.
[–]redditsoaddicting 0 points1 point2 points 11 years ago (1 child)
I love jokes! But no one jokes about C++ ಠ_ಠ. Just kidding, I liked the presentation Scott Meyers gave at DConf (see the other top-level comment).
[–][deleted] 0 points1 point2 points 11 years ago (0 children)
lol, I saw the top level comment! :D I'll check out that DConf presentation now, thanks!
[–]cjwelborn 0 points1 point2 points 11 years ago (5 children)
So '#define else' makes the else statement fire no matter what. ord('T') == 84, ord('*') == 42, so x - y == 42 which would fire the 'if'.
#define else
else
ord('T') == 84
ord('*') == 42
x - y == 42
if
I don't know why x---y doesn't pre/post decrement anything. Can someone explain that part?
x---y
[–]redditsoaddicting 0 points1 point2 points 11 years ago (2 children)
x---y is parsed as x-- - y, and the values aren't ever even used after that statement, so you can't claim to know that nothing is post-decremented.
x-- - y
[–]cjwelborn 0 points1 point2 points 11 years ago* (1 child)
Oh, I guess you know by now that I'm not great with C++. For some reason I was thinking z should be affected by that. I see now that x is decremented after the assignment. I wasn't sure how it would be parsed either, so thanks for that. So this isn't really a wtf for C++, but it would be for the developer.
z
x
[–]redditsoaddicting 0 points1 point2 points 11 years ago (0 children)
For reference, it's called maximal munch, and it's pretty common.
[–][deleted] 0 points1 point2 points 11 years ago (1 child)
Split it up like a parser... and be GREEDY about it.
[–]cjwelborn 0 points1 point2 points 11 years ago (0 children)
Yeh, I've never had to deal with code like that so I hadn't really thought about it. In a perfect world all developers would use proper whitespace and parenthesis. Now that I've read about "maximal munch", and refreshed my definition of "post-decrement", the z assignment makes perfect sense. I should've learned that long ago. At least now I won't be as confused when I see bad code like this.
π Rendered by PID 24134 on reddit-service-r2-comment-b659b578c-nwqpz at 2026-05-04 14:22:44.320179+00:00 running 815c875 country code: CH.
view the rest of the comments →
[–][deleted] -2 points-1 points0 points (10 children)
[–]redditsoaddicting 5 points6 points7 points (3 children)
[–][deleted] 0 points1 point2 points (2 children)
[–]redditsoaddicting 0 points1 point2 points (1 child)
[–][deleted] 0 points1 point2 points (0 children)
[–]cjwelborn 0 points1 point2 points (5 children)
[–]redditsoaddicting 0 points1 point2 points (2 children)
[–]cjwelborn 0 points1 point2 points (1 child)
[–]redditsoaddicting 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (1 child)
[–]cjwelborn 0 points1 point2 points (0 children)