1 год назад
Что означает в си++ "++::" и как оно работает?
int f(int n) {
n *= 10;
++::n; <------------------------
return g(n);
int main() {
int n{2};
cout << f(n);
cout << n << ::n; <-------------------------
return 0;
}
Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
1234567891011121314151617181920212223242526
#include <iostream>
#include <vector>
using namespace std; //без указания namespace не обьявленные в коде переменные,функции и классы
//будет по умолчанию искать в одной из подключенных стандартных библиотеках или внутри ваших областей
//namespace std {} если таковые имеются
namespace xxr { int n=0; } //внутри namespace xxr - "n" принадлижит этой namespace
int n = 0; //вне main и вне других namespace - глобальная область
int main() {
for (int n = 0; n < 10; n++) //внутри счетчика - локальная "n"
{
++xxr::n; // xxr::n - это переменная "n" обьявленная в namespace xxr
--::n; // ::n - это переменная из глобальной области
cout << n; // cout в коде не обьявлена, поэтому из за "using namespace std"
// ищется в стандартной подключенной библиотеке и находит ее в
// библиотеке <iostream>
// а переменная "n" для которой не указана область -
// по умолчанию берется из локальной области
}
//если посмотреть таблицу приоритетов различных операторов, то у оператора :: наивысший приоритет,
//тоесть он применяется в первую очередь.
//поэтому --::n можно рассматривать как --(::n) вначале определяется из какой области переменная,
//а эатем к ней применяются остальные операторы, тут это декримент --
}
Префиксный инкремент переменной n, находящейся в глобальной области видимости
:: это оператор разрешения области видимости
++ это оператор инкремента
Это не имеет самостоятельного значения, это часть обозначения операции. Там написано ++::n. Это прединкремент переменной n из глобального пространства имен - увеличение значения этой переменной на 1 перед ее использованием.
+1 это значит
вместо n+=1 пишут просто n++