Settings

Theme

Infrequently Asked Questions in Comp.lang.c (1999)

seebs.net

77 points by hummusandsushi 3 years ago · 44 comments

Reader

raverbashing 3 years ago

Great joke list. Though sometimes reality beats fiction

> 1.6: I finally figured out the syntax for declaring pointers to functions, but now how do I initialize one?

> With the assignment operator

Well what did you expect right?!

  • spacedcowboy 3 years ago

    Given how opaque the syntax is, expecting to have to use a screwdriver isn’t that weird…

awestroke 3 years 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?

  • st_goliath 3 years ago

    > 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.

    • ethbr1 3 years ago

      > 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.

    • IgorPartola 3 years ago

      Smart apprentices take the day off when told to get blinker fluid. But your point stands.

  • torstenvl 3 years ago

    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.

    • bluedino 3 years ago

      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.

    • bluetomcat 3 years ago

      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.

      • torstenvl 3 years ago

        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.
  • denotational 3 years ago

    It’s meant to be humorous, there are footnotes explaining some of the jokes.

  • TheSoftwareGuy 3 years ago

    Most of the answers seem to contain bullshit. The one you quoted is wrong because the leading 0 is for octal notation, not hex

    • hulitu 3 years ago

      > 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.

  • teo_zero 3 years ago

    Just as a broken clock shows the correct time twice a day, you can use this syntax to input hexadecimal numbers less than 0A.

    • zoky 3 years ago

      Less than 8 actually. 0 at the start of a number indicates it’s octal, so 08 and 09 are not syntactically valid numbers.

      • bear8642 3 years ago

        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

  • Smaug123 3 years ago

    You have asked question 19.27, by the way.

  • oaiey 3 years ago

    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.

  • zh3 3 years ago

    Try compiling:-

    main() { int foo = 08; }

tpoacher 3 years ago

Are the "[a]" footnotes also meant to be "subtly wrong" for shits and giggles?

Footnote 1.5 for instance sounds completely wrong, as if the author is mixing up definition for declaration, and initialisation for definition:

declaration: lets the compiler know the existence of a symbol and its type, without allocating memory for it yet or assign a value. Either of those can happen in a different compilation unit and linked after after the compilation stage. e.g.

  extern int bar;
definition: arguably a poor choice of name, but this is the point at which a definitive space in memory is reserved for this variable. If no previous declaration for this symbol has taken place, the symbol is also declared as above too. The value in the newly allocated memory is effectively garbage, since it has not been initialised at yhis step. E.g.

  int bar;
initialisation: the assigning of contents into the memory portion that has been allocated for that symbol.

  bar = 5;
simultaneous declaration, definition, and initialisation in a single step:

  int bar = 5;
zh3 3 years ago

Some great in-jokes there (hands up who gets the EBCDIC one).

More seriously, a lot of the discussions about "undefined behaviour" seem to be aimed at the kind of code that no experienced engineer would write anyway. Until there's a language that's proved formally correct, every language is going to have "undefined" behaviour (though some languages - especially more modern ones - cover more cases/make it harder for less experienced users to blow their foot [or worse, someone elses] off).

  • kmeisthax 3 years ago

    Half of it is code no engineer would write and the other half of it occupies 30% of any sufficiently old C codebase. And usually the only way you find out that your clever new optimization is going to break the latter is to write a lot of the former.

tragomaskhalos 3 years ago

A good reminder that there were a lot of smartarses on usenet.

ukuina 3 years ago

Obligatory reference to http://vanilla-js.com

eska 3 years ago

Programmer humor is so shit, man..

archfrog 3 years ago

I don't want to be toxic but why make a function to cast a char to an int? I was astounded when I briefly skimmed through the list. I hope this is not curriculum in education.

  • Kamq 3 years ago

    I don't see the one you're talking to on a brief skim, but there are several functions that deal with processing a file character by character. They generally use ints because they need a way to signal end of file and you can't do that with any value of a byte.

  • chihuahua 3 years ago

    I got the impression that the entire document is meant as a joke.

  • xhainingx 3 years ago

    It's not. The whole thing is a joke.

herdcall 3 years ago

These don't look like "stupid questions" at all, but the disdainful smart aleck responders do look stupid. What a sad, toxic group of people.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection