On Sat, 1 Oct 2016 02:39 am, Chris Angelico wrote: > On Sat, Oct 1, 2016 at 12:36 AM, Grant Edwards > <grant.b.edwa...@gmail.com> wrote:
>> In C99 a for loop has its own namespac: [...] > I believe that's the same semantics as C++ uses, and I agree, it's > very convenient. Among other things, it means that nested loops behave > more like they do in Python, with independent iterators: *scratches head* So let me see if I understand this... You're suggesting that C99, where for-loops have their own namespaces, is MORE like Python (where for-loops DON'T have their own namespace), than C89, which, like Python, DOESN'T give for-loops their own namespace? That's ... curious. I'm not saying you're wrong: after spending three quarters of an hour trying to fix a six line (including one blank line) C program because I accidentally closed a comment with /* instead of */, I will believe anything about C[1]. If you tell me that void causes birth defects and printf is responsible for the police shootings of unarmed black men, I'll believe every word of it. > int main(void) > { > for (int i=0; i<5; ++i) > { > printf("%d:", i); > for (int i=0; i<3; ++i) > printf(" %d", i); > printf("\n"); > } > } > > Now, granted, this is not something I would ever actually recommend > doing, and code review is absolutely justified in rejecting this... So let me see if I understand your argument... for-loop namespaces are good, because they let you write code that you personally wouldn't write and would, in fact, reject in a code review. O-kay. > but it's a lot better than pure function-scope variables, where you'd > get stuck in an infinite loop. That's the risk that you take when you have a C-style for loop and you modify the loop variable. There's nothing special about the inner loop in that regard: #include <stdio.h> /* for printf */ int main(void) { for (int i=0; i<5; ++i) { printf("%d:", i); i = 0; } } Solution: don't do that. [1] Apparently useful error messages are one of those things C programmers eschew, like type safety, memory safety, and correctness. -- Steve “Cheer up,” they said, “things could be worse.” So I cheered up, and sure enough, things got worse. -- https://mail.python.org/mailman/listinfo/python-list