Order-Of-Evaluation – вопросы и ответы

59
голосов
8
ответов
Я не понимаю, что делает оператор IF, из того, что я вижу, проверяет, равна ли переменная x int 0 . Если это true , возвращается значение ABSOLUTE для переменной y ... это когда я теряю график, поч...
18 часов назад user4910881
187
голосов
8
ответов
Недавно я пришел к этому методу для замены значений двух переменных без использования третьей переменной. a^=b^=a^=b Но когда я попробовал вышеуказанный код на разных компиляторах, я получил разные...
2 дня, 19 часов назад Pattrick
61
голос
2
ответа
Это мой код class A: pass def f(): yield A() def g(): it = f() next(it).a = next(it, None) g() который вызывает ошибку StopIteration , вызванную next(it).a = next(it, None) . Зачем? В документации ...
2 дня, 21 час назад vaultah
158
голосов
4
ответа
Примечание. Здесь нет многопоточности. Просто оптимизированный однопоточный код. Функциональный вызов представляет точку последовательности . (Очевидно.) Из этого следует, что компилятор (если опти...
6 дней, 19 часов назад Martin Ba
73
голоса
2
ответа
Мне нужно написать программу Smalltalk с чистым объектом, в которой мне нужно оценить условия, пока один из них не завершится. Я знаю, что в C мы можем использовать для этого оператор && , ...
6 дней, 19 часов назад newbie
84
голоса
1
ответ
В обеих схемах r6rs и Racket действует следующая процедура: ;; create a list of all the numbers from 1 to n (define (make-nums n) (do [(x n (- x 1)) (lst (list) (cons x lst))] ((= x 0) lst))) Я тес...
6 дней, 22 часа назад Cam
86
голосов
4
ответа
Еще раз, наши самые любимые "i = i--" -подобные проблемы. В C99 мы имеем: 6.5 Выражения # 2: между предыдущей и следующей точками последовательности объект должен иметь сохраненное значение изменен...
1 неделя, 1 день назад osgx
112
голосов
1
ответ
В чем разница между этими двумя строками кода? a = (b if (b = "test")) a = b if (b = "test") Первый работает отлично и задает как a и b для test , но второй вызывает ошибку: NameError: неопределенн...
1 неделя, 3 дня назад Devon Parsons
119
голосов
2
ответа
При попытке реализовать переопределение GetHashCode аналогично предложению Jon Skeet в Каков наилучший алгоритм для переопределенного System.Object.GetHashCode? Я заметил некоторое нечетное поведен...
1 неделя, 3 дня назад psubsee2003
204
голоса
2
ответа
Учитывая следующее: std::string make_what_string( const std::string &id ); struct basic_foo { basic_foo( std::string message, std::string id ); }; struct foo : public basic_foo { foo::foo( std:...
1 неделя, 4 дня назад Tom
95
голосов
1
ответ
Возможный дубликат: C Препроцессор, Stringify результат макроса Коротко: #include <iostream> float pi(){ return 3.14; } #define PRINT(x) std::cout << #x << std::endl; #define PI p...
1 неделя, 4 дня назад j_kubik
73
голоса
1
ответ
Вывод следующего кода 5 3 Я новичок в Python, может кто-нибудь объяснить мне, почему? import sys def Main(): str='1+2' print eval(str) class A: def __init__(self): self.x = 5 a = A() print a.x if _...
1 неделя, 4 дня назад mousepotato
74
голоса
1
ответ
Насколько я знаю, С++ всегда оценивает слева направо в условном выражении if(A, B, C) A будет сначала оценен, B второй и так далее. Однако следующий пример демонстрирует нечетное поведение. #includ...
1 неделя, 5 дней назад Präriewolf
75
голосов
2
ответа
Возможный дубликат: Проблема с PHP-тернарным оператором Я немного читал PHP на этой статье , и некоторое время я остановился,
1 неделя, 5 дней назад StrixVaria
152
голоса
2
ответа
Во время рефакторинга некоторого кода сегодня, чтобы изменить исходные указатели на std::unique_ptr , я столкнулся с ошибкой сегментации из-за ошибки порядка оценки . Старый код сделал примерно сле...
2 недели назад Steve Lorimer
166
голосов
2
ответа
Почему следующая компиляция в С++? int phew = 53; ++++++++++phew ; Тот же код не работает в C, почему?
2 недели, 2 дня назад Jatin
73
голоса
2
ответа
Почему функция g() называется первой? Я определил g() как второй элемент в списке инициализаторов. Соответствует ли следующая цитата из стандарта, относящаяся к спискам инициализаторов? §8.5.4.4: В...
2 недели, 3 дня назад Adib
60
голосов
2
ответа
В выражении вида f( g(), h() ); порядок оценки g() и h() не определен. Указывается только, что одно должно происходить перед другим. Если g() и h() имеют видимые побочные эффекты, от которых зависи...
2 недели, 5 дней назад Ralph Tandetzky
111
голосов
4
ответа
int val = 5; printf("%d",++val++); //gives compilation error : '++' needs l-value int *p = &val; printf("%d",++*p++); //no error Может ли кто-нибудь объяснить эти два случая? Спасибо.
2 недели, 5 дней назад understack
511
голосов
12
ответов
Следующие для циклов производят идентичные результаты, даже если используется приращение постов и другое предварительное приращение. Вот код: for(i=0; i<5; i++) { printf("%d", i); } for(i=0; i&l...
9 месяцев, 3 недели назад theReverseFlick
73
голоса
8
ответов
Рассмотрим следующий пример: struct { int num; } s, *ps; s.num = 0; ps = &s; ++ps->num; printf("%d", s.num); /* Prints 1 */ Он печатает 1 . Поэтому я понимаю, что это связано с тем, что в со...
9 месяцев, 3 недели назад Ori Popowski
151
голос
1
ответ
Итак, стандарт С++ требует, чтобы члены класса были инициализированы в том порядке, в котором они объявлены в классе, а не в том порядке, в котором они упоминаются в любом списке инициализаторов ко...
9 месяцев, 3 недели назад Novelocrat
84
голоса
2
ответа
У меня возникают проблемы с некоторыми сложными лямбда-выражениями в Scheme, и я хотел бы посмотреть, как они оцениваются интерпретатором. Я хотел бы, чтобы интерпретатор Схемы печатал все этапы оц...
9 месяцев, 3 недели назад Danilo Piazzalunga
93
голоса
2
ответа
Скажем, у нас есть простой код: // $foo and $bar aren't defined before $foo = 5 && $bar = 15; // var_dump() // $foo is (bool) TRUE // $bar is (int) 15 поэтому я предполагаю, что он работает...
9 месяцев, 3 недели назад firstandlastpost
84
голоса
1
ответ
Скажем, я делаю это в python 3.6: class A: class B: pass class C: x = B() Это не означает, что B не определяется при создании экземпляра в C . Однако это: class A: x = 1 y = x def f(self): return s...
9 месяцев, 3 недели назад Charles Langlois
161
голос
2
ответа
Я получаю эту ошибку: Неустранимая ошибка: Ошибка при отсутствии: имя функции должно быть строкой в ​​ Для этого кода: if (function_exists($item['function'])) { $item['function']($item, $default); ...
9 месяцев, 3 недели назад backups
105
голосов
3
ответа
Ниже приведен код (ниже), который я не понимаю. #include <stdio.h> int fA (int x) { int w = x; printf("%d", x); if (x > 4) w += fA(x - 2); if (x > 2) w += fA(x - 4); printf("%d", x); re...
9 месяцев, 3 недели назад user5857885
111
голосов
1
ответ
public static float BackInOut(float from, float to, float time) { const float s = 1.70158f * 1.525f; to -= from; if ((time /= .5f) < 1f) // 5 6 3 4 0 1 2 7 return to * .5f * (time * time * ((s +...
9 месяцев, 3 недели назад Rakka Rage
61
голос
1
ответ
Я работаю над проектом компилятора, и мне нужно реализовать функции на языке C-ish: во-первых, я использую инструменты анализатора Racket ( http://docs.racket-lang.org/parser-tools/LALR_1__Parsers....
9 месяцев, 4 недели назад John Thomas
111
голосов
1
ответ
У меня есть три класса, все из которых должны быть включены/отключены на основе аннотации @ConditionalOnExpression. Все они находятся в отдельных файлах .java. Пример: @ConditionalOnExpression("#T(...
9 месяцев, 4 недели назад Deepak Selvakumar
303
голоса
1
ответ
Учитывая следующий вызов функции в C : fooFunc( barFunc(), bazFunc() ); Порядок выполнения barFunc и BazFunc не указан, поэтому barFunc() может быть вызван до bazFunc() или bazFunc() до barFunc() в...
10 месяцев назад tpdi
59
голосов
1
ответ
Я новичок в языке C, поэтому PLZ sum1 помогите мне. C-код, написанный int i=3; printf("%d",++i + ++i); Complier gvs O/P = 9. Как? Заранее спасибо
10 месяцев назад Brite Roy
59
голосов
2
ответа
Скажем, например, у меня длинное выражение вроде cout << findCurrent() << "," << findLowest() << "," << findHighest() << "," << findThird()<<"\n"; бу...
10 месяцев назад iZeusify
208
голосов
5
ответов
Извиняюсь заранее, я знаю, что общая тема оценочного порядка уже много вопросов SO. Однако, взглянув на них, я хочу прояснить несколько конкретных моментов, которые, как я думаю, не означает дублир...
10 месяцев назад Smeeheey
105
голосов
4
ответа
public class AndOperator { public static void main(String[] arg) { int value = 8; int count = 10; int limit = 11; if (++value % 2 == 0 && ++count < limit) { System.out.println("here"); S...
10 месяцев назад Sarath Chandra
306
голосов
6
ответов
Хорошо, я знаю, что стандарт диктует, что реализация С++ может выбирать, в каком порядке оцениваются аргументы функции, но есть ли какие-либо реализации, которые фактически "используют" это в сцена...
10 месяцев назад RaptorFactor
111
голосов
1
ответ
Вот составное выражение, содержащее два оператора присваивания: var a = {n: 1}; var b = a; a.x = a = {m: 2}; a; // => {m: 2} b; // => {n: 1, x: {m: 2}} Трудная часть - третья строка: a.x = a ...
10 месяцев назад leslie.zhang
112
голосов
5
ответов
В большинстве языков программирования аргументы, переданные функции, вычисляются до того, как функция их использует, то есть они оцениваются с нетерпением. Для меня, похоже, было бы гораздо разумне...
10 месяцев назад Peter Olson
96
голосов
2
ответа
В Scala вы можете выбирать между аппликативной или обычной оценкой порядка, см. " Scala call-by-name (= > ) vs call-by -типа " для примера. def byName(a: => Unit) = { for (i <- 0 until 10)...
10 месяцев назад carstenj
84
голоса
1
ответ
Выполнение этого простого кода: int foo(int* a){ cout <<"a="<<a; *a=1; cout <<", *a="<<*a<<endl; return 0;} int main () { int* ptr; ptr=new int[2]; ptr[0]=0; ptr[1]=0;...
10 месяцев назад P Marecki
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема