C++ — Что значит & quot; =! & Quot; оператор делает?
Я случайно набрал =!
вместо !=
это вызвало огромную ошибку в системе, которая некоторое время оставалась незамеченной; С тех пор я исправил это, но мне любопытно, что =!
делает.
У меня было что-то вроде этого
void foo(int param)
{
int a = 0;
...
if (a =! param)
{
// never got here even when `a` was not equal to `param`
}
...
}
Может кто-нибудь объяснить, что выше if
заявление оценивает?
4
Решение
Это выражение:
a =! param
присваивает значение !param
в a
, !param
является отрицательной версией параметра, оцененного в логическом контексте.
Операторы присваивания возвращают значение правой части, поэтому if (a = !param)
также выполняет if
тело, если !param
правда.
26
Другие решения
Это не один =!
оператор. Это
а также !
, назначение и отрицание.
Это эквивалентно if (a = !param)
, или же
a = !param;
if (a) {
}
9
=!
не оператор. Это =
(присваивание) оператор и !
(логическое не) оператор.
Так что у тебя есть if (a = !param)
, Присвоение возвращает значение присваивания, поэтому у вас по существу есть:
a = !param;
if (a) {
...
6
Если вы считаете, что это может быть несколько токенов, эффект должен быть простым:
if (a = !param)
5
Важный: '=!' != '!='
🙂
Но: '=!' == 'assignment of the negation of a value'
например в псевдо:
bool a= true;
bool b=!a;
так что б ложно!
2
знак равно Не оператор. Вы можете понять это так. Предположим, что есть заявление a=!b
это присваивание операнда b в a, но здесь поворот заключается в том, что перед присваиванием b к a мы обращаем состояние b, префиксируя операнд b с помощью! что в принципе логично, а не оператор.
1
PHP — что значит /../ или & quot; /../& quot; значит в файловой системе?
Я знаю это . относится к текущему каталогу, а ./ относится к файлам в текущем каталоге.
Я также знаю, что .. относится к родительскому каталогу
Недавно я наткнулся на следующую строку:
require __DIR__.'/../vendor/autoload.php';
(Это было в файле index.php laravel.)
Вот что конкретно означает «/../»?
Спасибо
Изменить: я пытался поиск в Google. Я попытался выполнить поиск с использованием escape-последовательностей, например //..//, но он не дал требуемого ответа.
2
Решение
Вы читаете это так:
__DIR__ // start in the current directory ../ // go up one directory from where you are vendor/ // go into the vendor directory autoload.php // and require the autoload.php file
Экстра /
между __DIR__
а также ../
просто чтобы убедиться, что текущий каталог заканчивается косой чертой, так что вы получите, например, code/../vendor/autoload.php
вместо code../vendor/autoload.php
2
Другие решения
В дорожках .
ссылается на текущий (рабочий) каталог и ..
ссылается на родительский каталог (если существует). Оба являются «горячими клавишами» для фактической записи именованных каталогов (если, например, вы не знаете имя текущего / родительского каталога): Вот пример:
Если вы находитесь в папке /root
:
1 ./test //--> points to folder 'test' (relative path)
2 /root/test //--> points to folder 'test' (absolut path)
оба равны. И если вы находитесь в папке /root/test
:
1 ./.. //--> points to folder 'root' (relative path)
2 /root //--> points to folder 'root' (absolut path)
0
../
перейти в родительский каталог, а затем быть в том же корневом каталоге проекта /
до ../
require __DIR__.'/../vendor/autoload.php';
0
Он ссылается на родительский каталог текущего пути (конечно, если родительский каталог существует).
0
В принципе, /../
не имеет конкретного определения, потому что это часть __DIR__.'/../vendor/autoload.php'
который состоял из ..
а также /vendor/autoload.php
, Который ..
означает вернуться к текущему родительскому каталогу, а потом скажет вам ввести или cd
в vendor
затем перейдите к autoload.php
и все относительно __DIR__
,
Пример:
Представь, что ты хочешь gedit
файл в другом каталоге из вашего текущего каталога, который структурирован ниже
/home/handsomeyou/Documents/Code/ -> your current directory
/home/hansdomeyou/Documents/Tasks/task_list.txt -> your target
Есть много подходов для достижения этой цели, но чтобы сделать его актуальным для вашего вопроса, мы сделаем это
$ gedit ../Tasks/task_list.txt
0
PHP — Что значит «с.» и & quot; n & quot; значит / делать в этом MySQL утверждении?
В настоящее время я работаю над проектом, который требует от меня взглянуть на чей-то другой код, я все еще плохо знаком с некоторыми из этих вещей, и есть кое-что, что я не совсем понимаю, поэтому надеялся, что кто-то сможет пролить свет на то, что на самом деле код делать или что это значит?
Вот утверждение в вопросе:
select s.* from $tableA n, $tableB s where
n.id='$send' and
n.status='$status' and
n.field=s.id";
Я понимаю, что вплоть до основ это утверждение получает все поля из таблиц А и Я просто не уверен, что s.
делает или что n
0
Решение
Они называются SQL Table Aliases
и, в основном, это временные имена, которые вы даете таблицам для лучшей читаемости, когда вы используете имена таблиц для указания столбца.
В вашем примере
SELECT s.* FROM $tableA n, $tableB s
WHERE n.id='$send'
AND n.status='$status'
AND n.field=s.id ;
такой же как
SELECT $tableB.* FROM $tableA, $tableB
WHERE $tableA.id='$send'
AND $tableA.status = '$status'
AND $tableA.field = $tableB.id ;
но, очевидно, его легче читать.
Псевдонимы таблиц еще более полезны, когда вы присоединяетесь к большему количеству таблиц, и абсолютно необходимы при самостоятельном объединении.
Синтаксическая заметка:
Вы можете или не можете использовать AS
Ключевое слово, когда псевдоним таблицы.
SELECT table_name AS alias
такой же как
SELECT table_name alias
и хотя иногда он длиннее, это приводит к лучшей читаемости (например, в большом и грязном запросе большой AS
легче заметить 🙂
3
Другие решения
Других решений пока нет …
C++ — что значит «BUGCHECK_STR: APPLICATION_FAULT_NULL_CLASS_PTR_READ_AFTER_CALL» & quot; значит в windbg! проанализировать -v вывод
Я пытаюсь проанализировать файл аварийного дампа с помощью windbg и набрать команду расширения, чтобы получить некоторый базовый результат анализа «! Analysis -v», и получить результат следующим образом: — (Я вставил только часть информации здесь)
....
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000000
Parameter[1]: 00000004
Attempt to read from address 00000004
PROCESS_NAME: tscommand.exe
...
LAST_CONTROL_TRANSFER: from 010444c2 to 010181e6
FAULTING_THREAD: 00002270
BUGCHECK_STR: APPLICATION_FAULT_NULL_CLASS_PTR_READ_AFTER_CALL
PRIMARY_PROBLEM_CLASS: NULL_CLASS_PTR_READ_AFTER_CALL
DEFAULT_BUCKET_ID: NULL_CLASS_PTR_READ_AFTER_CALL
STACK_TEXT:
...
Что здесь означает «BUGCHECK_STR: APPLICATION_FAULT_NULL_CLASS_PTR_READ_AFTER_CALL»? Означает ли это, что приложение является ошибкой из-за указателя класса NULL после вызова функции? Я ищу в сети, не могу найти ничего о APPLICATION_FAULT_NULL_CLASS_PTR_READ_AFTER_CALL.
1
Решение
«BUGCHECK_STR» — это классификация, используемая Microsoft для «классификации» ошибок, и эта, по-видимому, указывает на то, что у вас есть указатель класса NULL, что мне кажется правильным, поскольку чтение памяти происходит с адреса 4, который является небольшое смещение от основания нулевого указателя.
По сути, у вас возникает ситуация, когда вы используете указатель на что-то (я не уверен на 100%, что это класс как таковой), и указатель равен NULL в тот момент, когда вы разыменовываете его. Вполне возможно, что это вызвано вызовом функции-члена, и отладчик может выяснить это [глядя на комбинацию стека вызовов, символов и значений регистров], но WinDBG не знает, как получить эти вещи. время от времени это неправильно — это эвристика, так что это что-то вроде: «Если у нас есть это значение здесь, и это значение там, и что-то еще соответствует этому диапазону, то именно эта группа ошибок».
Если вы разместите немного больше значений стека / регистра в момент сбоя, возможно, будет возможно узнать немного больше о том, что пошло не так.
Из комбинации кода ошибки и дополнительных данных с ошибкой очевидно, что ваш код читает адрес 4 в памяти. Что обычно означает попытку использовать второе целое число или число с плавающей точкой в классе / структуре, на которые указывает «NULL». Я видел это довольно много раз, когда я забыл «if (ptr! = NULL) …» в моем коде. Случается с большинством из нас время от времени …
2
Другие решения
Других решений пока нет …