Описание тега comma-operator
Оператор запятая - это оператор, который оценивает свою левую часть, отбрасывает результат, а затем вычисляет правую часть. Это используется на нескольких языках, включая C, C++ и JavaScript.
2
ответа
Почему расширение пакета внутри неоцененного операнда приводит к последнему элементу?
Я могу сделать это внутри decltype(): auto g() -> decltype(1, "", true, new int); Но не это: template <class... Args> auto g(Args&&... args) -> decltype(args...); Сбой, потому что расширение пакета появляется внутри decltype() но…
31 окт '14 в 19:16
2
ответа
Почему этот код компилируется в VS? ("лишняя" запятая)
Строка ниже находится внутри цикла for. Если метод терпит неудачу, он должен сломаться. CATEGORY_1 - это перечисление. Я добавил это перечисление в качестве нового параметра в метод AddToList со значением по умолчанию. Если вы посмотрите внимательно…
12 апр '11 в 01:38
4
ответа
Запятая против оператора && в циклах и if-else
Рассмотрим код: if(x = a/b, a%b) printf("do this"); else printf("do that"); Теперь, если я заменю if заявление if(x = a/b && a % b), Тогда это работает также. Поэтому я хочу знать, что замена запятой на && оператор и наоборот работае…
30 апр '14 в 07:26
3
ответа
Запятая возвращает первое значение вместо второго в списке аргументов?
MDN утверждает, что: Оператор запятой оценивает оба своих операнда (слева направо) и возвращает значение второго операнда. Тем не менее, когда я попытался запустить <script> alert(1, 2); </script>, он показывает "1" вместо "2". Я что-то…
07 апр '11 в 11:54
1
ответ
PHP 7 облегчает замену оператора запятой?
До сих пор я узнал, что в PHP отсутствует оператор запятой (меня не интересуют мнения, хорошо это или плохо). Так как я попадаю в схему таких выражений: ($tmp = bar(), foo($tmp), $tmp) выполнять вычисления и кэшировать вывод использовать кэшированно…
22 дек '15 в 09:52
1
ответ
Что случилось со static_cast с несколькими аргументами?
Может кто-нибудь сказать мне, что это приведение имеет для эффекта (помимо установки happyNumber 1337), если таковые вообще имеются, и если это не имеет никакого другого эффекта, почему я могу написать код, подобный этому??? Это ошибка компилятора и…
27 фев '09 в 09:48
3
ответа
Запятая оператор и пустое выражение
Я наткнулся на этот фрагмент кода 1 int return_printChar1() { // code // oops! no return statement } int return_printChar2() { // code return printf("Return"); } int main() { int i; // some more code i = return_printChar2(); if((return_printChar1(),…
23 мар '11 в 05:01
5
ответов
Когда все оператор запятой не действует как оператор запятой?
Если вы видите этот код, class A{ public: A(int a):var(a){} int var; }; int f(A obj) { return obj.var; } int main() { //std::cout<<f(23); // output: 23 std::cout<<f(23, 23); // error: too many arguments to function 'int f(A)' return 0; }…
27 июн '10 в 18:20
2
ответа
Почему double x = 0,1; не компилировать?
double x = 0,1; не компилируется (примеряет MSVC9.0). Ошибка C2059 syntax error : 'constant' Я понимаю, что вместо точки есть запятая, но не следует ли интерпретировать приведенную выше строку следующим образом? double x = (0,1); //which is double x…
30 окт '12 в 19:20
2
ответа
Должен ли оператор запятой быть левоассоциативным?
Согласно этой таблице приоритетов оператор запятой является левоассоциативным. То есть, a, b, c анализируется как (a, b), c, Это необходимость? не было бы a, (b, c) есть точно такое же поведение?
23 дек '12 в 11:29
2
ответа
Как оператор запятой используется здесь?
Возможный дубликат: C++ оператор запятой Использование оператора C запятой Я не новичок в C++, но это первый раз, когда я вижу следующий код: int a=0; int b=(a=2,a+1); Это код C++. Можете ли вы сказать мне, что здесь происходит? А как переменная b п…
10 окт '12 в 16:45
5
ответов
Что делает это динамическое распределение?
Сегодня я узнал, что вы можете написать такой код на C++ и скомпилировать его: int* ptr = new int(5, 6); Какова цель этого? Я знаю, конечно, динамический new int(5) вещь, но здесь я потерялся. Есть какие-нибудь подсказки?
26 фев '10 в 23:40
2
ответа
Запятые в цикле
Почему следующая строка выдает ошибки? for(int i = 0, int pos = 0, int next_pos = 0; i < 3; i++, pos = next_pos + 1) { // … } error: expected unqualified-id before ‘int’ error: ‘pos’ was not declared in this scope error: ‘next_pos’ was not declar…
01 авг '10 в 22:18
1
ответ
C - оператор while для инициализатора цикла
Почему я не могу написать что-то подобное? int i, size; int *arr; ... for(i = size - 1, while(arr[i] == 0) i--; i >= 0; i--) { ... }
23 мар '16 в 17:01
3
ответа
Понять оператор запятой
int main() { int a = (1,2,3); int b = (++a, ++a, ++a); int c= (b++, b++, b++); printf("%d %d %d", a,b,c); } Я новичок в программировании. Я не понимаю, как эта программа показывает мне вывод 6 9 8,
08 дек '15 в 11:23
1
ответ
Как ((a++,b)) работает?
В приведенном выше блоке кода, я пытаюсь понять, как строка return reverse((i++, i)) работает. #include <stdio.h> void reverse(int i); int main() { reverse(1); } void reverse(int i) { if (i > 5) return ; printf("%d ", i); // return reverse(…
23 июн '15 в 06:55
2
ответа
Разрешен ли оператор запятой в выражении константы в C++11?
В процессе ответа на этот вопрос о SO для C++11 я понял, что в C++03 (как и в C) использование оператора запятой явно запрещено в константном выражении. Пункт 5.19/1 стандарта C++ 03 по константным выражениям гласит: [...] В частности, кроме выражен…
16 май '13 в 00:02
1
ответ
Почему я должен заключить в скобки инициализирующее выражение, которое является выражением запятой?
Разбирая проблему, я имею в виду ее сущность, я могу инициализировать переменную как int, выполнив вначале лямбду бездействия в выражении через запятую, например так: int main(){ auto x = ( []{}(), 10 ); // same effect as auto x = 10; } Но если я не…
04 фев '16 в 17:28
1
ответ
Действительно ли перегрузка оператора запятой * действительно * влияет на порядок вычисления его операндов?
Оператор запятой гарантирует порядок оценки слева направо. [n3290: 5.18/1]: Операторы запятой группируются слева направо. expression: assignment-expression expression , assignment-expression Пара выражений, разделенных запятой, оценивается слева нап…
19 окт '11 в 11:26
1
ответ
Тернарный и запятый оператор
int a,b; a = 1 ? 1,2 : 3,4; // a = 2 b = 0 ? 1,2 : 3,4; // b = 3 Оператор запятой всегда возвращает правую часть запятой, но если мы присваиваем переменную, он возвращает влево, кроме случая, когда мы используем (). Так как, черт возьми, первое выра…
01 ноя '16 в 21:56