Что такое точка с запятой в C++?
грубо говоря, в C++ есть операторы (+ , - * [] new ...) идентификаторы (имена классов, переменных, функций...), const literals (10, 2.5, "100",...), несколько ключевых слов (int, class, typename, mutable, ...), скобки ({ } < > ), препроцессор (#, ## ...). Но что такое точка с запятой?
11 ответов
точка с запятой-это punctuator см. 2.13 §1
лексическое представление программ C++ включает в себя ряд токенов предварительной обработки, которые используются в синтаксис препроцессора или преобразуются в токены для операторов и знаки пунктуации
Это часть синтаксиса и в нем элемент несколько заявлений. В EBNF:
<do-statement>
    ::= 'do' <statement> 'while' '(' <expression> ')' ';'
<goto-statement>
    ::= 'goto' <label> ';'
<for-statement>
    ::= 'for' '(' <for-initialization> ';' <for-control> ';' <for-iteration> ')' <statement>
<expression-statement>
    ::= <expression> ';'
<return-statement>
    ::= 'return' <expression> ';'
этот список неполон. Пожалуйста, см. Мой комментарий.
точка с запятой-это терминал, знак, что что-то заканчивается. Что именно он завершает зависит от контекста.
точка с запятой обозначает последовательную композицию. Он также используется для выделения объявления.
точка с запятой не имеет определенного имени в стандарте C++. Это просто символ, который используется в некоторых грамматических произведениях (и это просто случается в конце их довольно часто, поэтому он "завершает" эти грамматические конструкции). Например, точка с запятой находится в конце следующих частей грамматики C++ (не обязательно полный список):
- an 
expression-statement 
точка с запятой (;) - это команда на языке C++. Он сообщает компилятору, что вы находитесь в конце команды.
'; ' часто используются для разграничения одного бита исходного кода C++, указывая, что он намеренно отделен от следующего кода. Чтобы увидеть, насколько это полезно, давайте представим, что мы не использовали его:
например:
#include <iostream>
int f() { std::cout << "f()\n"; }
int g() { std::cout << "g()\n"; }
int main(int argc)
{
    std::cout << "message"
    ""[argc] ? f() : g();  // final ';' needed to make this compile
                                     // but imagine it's not there in this new
                                     // semicolon-less C++ variant....
} 
этот (ужасный) бит кода, вызванный без аргументов, таких, что argc is 1, принты:
ef()\n
почему не "messagef ()\n"?  Это то, что можно было бы ожидать, учитывая первый std::cout << "message", потом ""[1] будучи '' - true в a логический смысл - предполагает вызов f() печати f()\n?
потому что... (барабанная дробь)... в C++ смежные строковые литералы объединены, поэтому программа разбирается следующим образом:
std::cout << "message"[argc] ? f() : g();
это:
- найти 
[argc/1](второй) символ в "сообщение\0\1\0\1\1", который является первым 'e' - отправить 'e' для 
std::cout(печать) - тернарный оператор '?'триггеры литье 
std::coutдляboolкоторая производитtrue(потому что печать, вероятно, работала), так чтоf()называется...! 
учитывая, что эта конкатенация строковых литералов невероятно полезна для указания длинных строк (и даже более короткие многострочные строки в удобочитаемом формате), мы, конечно, не хотели бы предполагать, что такие строки не должны быть объединены. Следовательно, если точка с запятой исчезла, компилятор должен предположить, что конкатенация предназначена, хотя визуально макет приведенный выше код подразумевает иное.
это запутанный пример того, как код C++ С и без ';'S изменяет значение. Я уверен, что если я или другие читатели подумают об этом в течение нескольких минут, мы могли бы придумать другие - и более простые - примеры.
во всяком случае,'; ' это необходимые сообщить компилятору, что оператор termination/separation предназначен.
,, = и :) может быть операторами или пунктуацией,
в зависимости от контекста, например:
f( a, b );      //  comma is punctuation
f( (a, b) );    //  comma is operator
a = b;          //  = is assignment operator
int a = b;      //  = is punctuation
x = c ? a : b;  //  colon is operator
label:          //  colon is punctuation
в случае первых двух, различие важно, так как пользователь определенная перегрузка будет влиять только на оператора, а не на пунктуацию.
Он представляет собой конец оператора C++.
например,
 int i=0;
 i++;
В приведенном выше коде есть два заявления. Во-первых, для объявления переменной, а второй-для увеличения значения переменной на единицу.