13
голосов
5ответов
2498 просмотров

How do we explain the result of the expression (++x)+(++x)+(++x)?

x = 1; std::cout << ((++x)+(++x)+(++x)); I expect the output to be 11, but it's actually 12. Why?

0
голосов
4ответов
542 просмотров

Where is the bug in this Console.WriteLine statement?

If you run the following code you get the output: The answer is: class Program { static void Main(string[] args) { HtmlElement element = new HtmlElement(); element.InnerHtml = "<br>"; string val = element.InnerHtml != null ? element.InnerHtml : ele...

4
голосов
2ответов
4285 просмотров

Python String Formatting And String Multiplication Oddity

Python is doing string multiplication where I would expect it to do numeric multiplication, and I don't know why. >>> print('%d' % 2 * 4) 2222 >>> print('%d' % (2 * 4)) 8 Even forcing the type to integer does nothing. (I realize this is redundant, but it's an idiot-check for ...

12
голосов
6ответов
3489 просмотров

int[] arr={0}; int value = arr[arr[0]++]; Value = 1?

Today I came a cross an article by Eric Lippert where he was trying to clear the myth between the operators precedence and the order of evaluation. At the end there were two code snippets that got me confused, here is the first snippet: int[] arr = {0}; int value = arr[arr[0]++]; No...

179
голосов
4ответов
145423 просмотров

SQL Logic Operator Precedence: And and Or

Are the two statements below equivalent? SELECT [...] FROM [...] WHERE some_col in (1,2,3,4,5) AND some_other_expr and SELECT [...] FROM [...] WHERE some_col in (1,2,3) or some_col in (4,5) AND some_other_expr Is there some sort of truth table I could use to verify this?

77
голосов
6ответов
51197 просмотров

C# conditional AND (&&) OR (||) precedence

We get into unnecessary coding arguments at my work all-the-time. Today I asked if conditional AND (&&) or OR (||) had higher precedence. One of my coworkers insisted that they had the same precedence, I had doubts, so I looked it up. According to MSDN AND (&&) has higher preced...

0
голосов
5ответов
212 просмотров

So maybe I'm not getting the idea in Ruby but I have a question about Enumerables inject

The |m,k| thing kind of throws me off. Does this have anything to do with order of precedence? m standing for 0 (or 1 in some languages) and k for the last in the Array/Hash whatever? So why do people put a number in .inject()? Alternatively, is there an easy way to learn how to use this, and e...

31
голосов
3ответов
9136 просмотров

What good are right-associative methods in Scala?

I've just started playing around with Scala, and I just learned about how methods can be made right-associative (as opposed to the more traditional left-associativity common in imperative object-oriented languages). At first, when I saw example code to cons a list in Scala, I had noticed that ev...

1
голосов
2ответов
2969 просмотров

разыменование и предварительный указатель в одном заявлении?

Я читаю из массива байтов следующим образом: int* i = (int*)p; id = *i; i++; поправьте меня, если я ошибаюсь, но ++ имеет приоритет над *, поэтому можно ли объединить * i и i ++ в одном выражении? (например, * i ++) (это технически небезопасный C #, а не C ++, p - байт *)

4
голосов
4ответов
1393 просмотров

Как мне составить ленивый список на нетерпеливом языке?

Я хотел составить ленивый список в Scheme. Это то, что у меня есть. ;; Constructor for Pairs (define (cons-stream a b) (cons a (λ() b))) ;; Selectors (define (car-stream a-stream) (car a-stream)) (define (cdr-stream a-stream) ((cdr a-stream))) ;; Lazy List using the pairs (define (la...

826
голосов
14ответов
76855 просмотров

Почему эти конструкции используют неопределенное поведение до и после инкремента?

#include <stdio.h> int main(void) { int i = 0; i = i++ + ++i; printf("%d\n", i); // 3 i = 1; i = (i++); printf("%d\n", i); // 2 Should be 1, no ? volatile int u = 0; u = u++ + ++u; printf("%d\n", u); // 1 u = 1; u = (u++); printf("%d\n", u); // 2 Sho...

9
голосов
5ответов
558 просмотров

Почему «**» связывает сильнее, чем отрицание?

Меня только что укусил следующий сценарий: >>> -1 ** 2 -1 Теперь, покопавшись в документации Python, становится ясно, что это предназначено поведение , но почему? Я не работаю ни с какими другими языками, имеющими силу в качестве встроенного оператора, но отсутствие максимальн...

55
голосов
13ответов
40498 просмотров

Постинкремент разыменованного указателя?

Пытаясь понять поведение указателей в C, я был немного удивлен следующим (пример кода ниже): #include <stdio.h> void add_one_v1(int *our_var_ptr) { *our_var_ptr = *our_var_ptr +1; } void add_one_v2(int *our_var_ptr) { *our_var_ptr++; } int main() { int testvar; testv...

4
голосов
7ответов
19784 просмотров

Оператор ИЛИ в C #

Могу ли я достичь if (a == "b" || "c") вместо if (a == "b" || a== "c") ?

2
голосов
8ответов
1118 просмотров

Понимание оценки выражений, содержащих операторы '++' и '->' в C

Рассмотрим этот пример: struct { int num; } s, *ps; s.num = 0; ps = &s; ++ps->num; printf("%d", s.num); /* Prints 1 */ Он печатает 1. Итак, я понимаю, что это потому, что в соответствии с приоритетом операторов -> выше, чем ++, поэтому сначала выбирается значение ps->n...

18
голосов
2ответов
9596 просмотров

Где законно использовать оператор ruby ​​splat?

Знаки отличные. Они предназначены не только для взрыва массивов, хотя это весело. Их также можно преобразовать в массивы и сгладить массивы (см. http://github.com/mischa/splat/ tree / master , чтобы получить исчерпывающий список того, что они делают.) Похоже, что нельзя выполнять дополнитель...

6
голосов
1ответов
2372 просмотров

Приоритет операторов Пролога и соответствие правилам

В мой интерпретатор пролога загружены следующие два факта: foo(U+V,1). foo(U*V,2). Теперь я пробую следующие запросы с такими результатами: foo(x*x+x,R). --> R = 1 foo(x+x*x,R). --> R = 1 foo(x*x*x,R). --> R = 2 Теперь я пытаюсь выполнить следующий запрос: foo(x*x...

0
голосов
3ответов
379 просмотров

Имеет ли значение приоритет оператора для && и == в javascript?

Более конкретно, существует ли набор значений (a, b и c), для которых приоритет оператора имеет значение в операторе: var value = (a && b == c); (за исключением NaN).

2
голосов
2ответов
533 просмотров

Каков порядок операций с этой конкатенацией?

x = "hello" " world".to_sym puts x.class Это работает и позволяет мне объединить две строки в символ и получить результат: Symbol Но если я немного изменю его, чтобы использовать + вместо пробела, разделяющего строки приветствия и мира, я получаю сообщение об ошибке: x = "hello" + ...

141
голосов
7ответов
33378 просмотров

Обязательны ли закорачивающие логические операторы? А порядок оценки?

Обязан ли стандарт ANSI замкнуть логические операторы в C или C ++? Я смущен, потому что я помню книгу K&R, в которой говорилось, что ваш код не должен зависеть от короткого замыкания этих операций, поскольку они могут не зависеть. Может ли кто-нибудь указать, где в стандарте говорится,...

60
голосов
6ответов
21581 просмотров

Компиляторы и порядок вычисления аргументов в C ++

Хорошо, я знаю, что стандарт диктует, что реализация C ++ может выбирать, в каком порядке оцениваются аргументы функции, но есть ли какие-либо реализации, которые фактически используют это в сценарии, когда это действительно повлияет программа? Классический пример: int i = 0; foo(i++, i++)...

3
голосов
5ответов
534 просмотров

Порядок приоритета с методами?

Допустим, у меня есть 2 метода. Один из них - это метод, запускаемый при изменении выбранного индекса в списке. Второй метод помогает очистить все текстовые поля, установить для индекса списка значение -1 и установить фокус. Вопрос: Выполняется второй метод, во время выполнения кода он мен...

3
голосов
10ответов
3414 просмотров

Как заключить выражение в скобки?

У меня есть идея сделать простую программу, которая поможет мне с приоритетом операторов в таких языках, как C. Самая сложная часть этого - заключить выражение в скобки. Например, я хочу это: *a.x++ = *b.x++ Преобразовано в это: ((*(((a).(x))++)) = (*(((b).(x))++))) Что я сделал вр...

3
голосов
7ответов
904 просмотров

Макросы C #define

Вот что у меня есть, и мне интересно, как это работает и что на самом деле делает. #define NUM 5 #define FTIMES(x)(x*5) int main(void) { int j = 1; printf("%d %d\n", FTIMES(j+5), FTIMES((j+5))); } Он дает два целых числа: 26 и 30. Как это сделать?

27
голосов
6ответов
3568 просмотров

Почему 1 +++ 2 = 3?

Как Python оценивает выражение 1+++2? Сколько раз + я вставил между ними, в качестве ответа он выводит 3. Кто-нибудь может объяснить это поведение Для 1--2 он печатает 3, а для 1---2 - -1

3
голосов
18ответов
1040 просмотров

Следует ли досконально знать приоритет оператора?

Следует ли программисту тщательно осознавать приоритет операторов? Можно использовать фигурные скобки для группировки выражений, не так ли? Я всегда использую подтяжки, чтобы быть в безопасности. И когда мне задают вопрос о приоритете, я не могу сразу ответить.

14
голосов
5ответов
12979 просмотров

Как выполнить внешние соединения таблиц "многие-ко многим"?

У меня есть 3 таблицы: foo, foo2bar и bar. foo2bar - это отображение многих ко многим между foo и bar. Вот содержание. select * from foo +------+ | fid | +------+ | 1 | | 2 | | 3 | | 4 | +------+ select * from foo2bar +------+------+ | fid | bid | +------+------+ | 1 | 1...

1
голосов
3ответов
991 просмотров

Запрос приоритета SQL

У меня есть таблица журналов с тремя столбцами. Один столбец является уникальным идентификатором, один столбец называется «Имя», а другой - «Статус». Значения в столбце «Имя» могут повторяться, поэтому вы можете видеть имя «Джо» в нескольких строках. Имя «Джо» может иметь строку со статусом «от...

2
голосов
1ответов
5629 просмотров

Логическое выражение - порядок операций

У меня есть тест в Excel VBA: Если (test1) And (test2) And (test3) Тогда 'сделай что-нибудь Конец, если В C, Java и т. д. сначала запускается test1, затем test2, затем test3. Критично, если test1 ложно, весь тест ложен, поэтому остальные тесты не запускаются. Это происходит в этом с...

17
голосов
9ответов
3085 просмотров

я = ++ я + ++ я; в C ++

Может кто-нибудь объяснить мне, почему этот код печатает 14? Меня просто спросил другой студент, и я не мог понять. int i = 5; i = ++i + ++i; cout<<i;