Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Talk:C syntax

Page contents not supported in other languages.
Add topic
From Wikipedia, the free encyclopedia
Latest comment: 6 months ago by Alexey Vazhnov in topic Confusing example of labelled loops

Evaluation order

[edit]

The last paragraph 'Evaluation order and Lazy evaluation' is almost completely wrong! Its author should read comp.lang.c FAQ list section 3, especially answer to question 3.5. Constructions like a != NULL && func(a++) do NOT invoke undefined behaviour. The writer is confusing C's short circuit evaluation to lazy evaluation which is a completely different thing. --193.143.83.252 17:36, 26 Mar 2004 (UTC)

Agree completely. That section was completely incorrect. I tried to fix it. Kevin Saff 14:16, 7 Apr 2004 (UTC)
Your version is much better than the original! I just added one sequence point to the list. 193.143.83.252


vfd

[edit]

This article was proposed for deletion January 2005. The discussion is archived at Wikipedia:Votes for deletion/C syntax. Joyous 22:46, Jan 22, 2005 (UTC)

Standard library != C Syntax

[edit]

The standard library (for which none of the header file names have been provided I might add) has nothing to do with the syntax of C. C can be used with other libraries or none at all; its syntax is independent of them. The translation of command-line arguments is the job of the linker and again has nothing to do with C syntax.

And then I find myself guilty of the same offense, so take what I said with a grain of salt.Kbolino 05:41, Apr 6, 2005 (UTC)

Confusing example of labelled loops

[edit]

I think example from the article C syntax#Labels is confusing:

// using break:
outer:
for (int i = 0; i < n; ++i) {
    switch (i) {
        case 1:
            break; // jumps to 1
        case 2:
            break outer; // jumps to 2
        default:
            continue;
    }
    // 1
}
// 2

// using continue:
outer:
for (int i = 0; i < m; ++i) {
    for (int j = 0; j < n; ++j) {
        continue; // jumps to 1
        continue outer; // jumps to 2
        // 1
    }
    // 2
}

For a comment "jumps to 1": which exactly "1", line 12 or line 22? I see two possible solutions:

  • Split this example into 2 code blocks.
  • Use unique names instead of 1, 2, 1, 2. Maybe "label_a", "label_b", "label_c", "label_d".

Additionally, are "case 1" and "case 2" connected with names 1, 2, 1, 2? It is better not use integer numbers for names in this example. Alexey Vazhnov (talk) 22:40, 10 January 2026 (UTC)Reply