Hacker News new | ask | show | jobs
by awestroke 1040 days ago
After reading through this, I'm not sure if it's a list of jokes or real information? For example:

> long ints can be entered using hexadecimal notation; for instance,

> long int foo = 07;

How is this a good example of hexadecimal input?

8 comments

> After reading through this, I'm not sure if it's a list of jokes or real information?

The whole point is pulling peoples legs, the joke being on the person who doesn't know the language well enough and takes it serious.

The answers in the list are the equivalent of telling an apprentice to go get a can of blinker fluid (or Siemens Lufthacken, etc...), which they dutifully do and end up getting laughed at.

E.g. just before the one you quoted was this gem:

> 1.8: What's the auto keyword good for?

>

> Declaring vehicles.

Regarding your question:

> How is this a good example of hexadecimal input?

It isn't. In C, a leading zero in an integer literal means octal. It compiles and works out, because `7`, `07` and `0x07` happen to have the same value.

> a leading zero in an integer literal means octal. It compiles and works out, because `7`, `07` and `0x07` happen to have the same value

That is a hilariously beautiful and simple example to communicate that.

Smart apprentices take the day off when told to get blinker fluid. But your point stands.
Most of them are inside jokes that aren't very funny.

Most of them are indeed frequently asked, but by people who are a bit obstinate or otherwise don't fit the mold that old timers thought newbies should fit.

As a result, the responses are often intentionally dismissive and unhelpful.

EDIT: It occurs to me that comp.lang.c was the 80s-90s version of Stack Overflow. So at least they're comparatively funnier than the SO responses they'd elicit today.

It was better than StackOverflow in a lot of ways.

Sure, it wasn't useful as a searchable database of questions, but the FAQ was very useful if you could spend time to wade through it, and any zero-effort posters were either flamed to oblivion or simply ignored.

I remember asking a couple stupid questions and directed to the documentation. To this day, at work I will suggest "let's see what the manual says", while troubleshooting and get a funny look and eve pushback after I find the answer.

What kind of pushback?
“The documentation can’t possibly be up-to-date”, probably.
On SO, any of these answers would be downvoted to death by people not recognising them as jokes at all. Language lawyer types would cite the part of the standard that classifies this as UB in the blink of an eye. It’s a different world we’re living in.
On SO these questions would get downvoted to death and the newbie would be admonished for breaking the site guidelines.

1.1: How do you decide which integer type to use?

    Closed as opinion based.
1.3: If I write the code int i, j; can I assume that (&i + 1) == &j?

    Please provide a minimal, complete and verifiable example. 
Etc.
It’s meant to be humorous, there are footnotes explaining some of the jokes.
Most of the answers seem to contain bullshit. The one you quoted is wrong because the leading 0 is for octal notation, not hex
> Most of the answers seem to contain bullshit. The one you quoted is wrong because the leading 0 is for octal notation, not hex

Why do i find your anwer very funny ?

The answers are more informal than a proper one because they make you think and challenge the answer.

You shouldn't take every sentence as truth.

Just as a broken clock shows the correct time twice a day, you can use this syntax to input hexadecimal numbers less than 0A.
Less than 8 actually. 0 at the start of a number indicates it’s octal, so 08 and 09 are not syntactically valid numbers.
Though think they might be accepted if using pre-ansi standard. Remember reading that in the changes list in my 2nd edition copy of k&r
You have asked question 19.27, by the way.
They also go me for a while (and I have C in my education but with C/C++ you never know for sure) but when Microsoft invented C I knew something was wrong.
Try compiling:-

main() { int foo = 08; }