Что делает “истинное”; или “10”; оператор, средний в C++ и как это может использоваться?

Изображения на хранилище файлов являются лучшим выбором и добавляют это с хранением метаданных в базе данных. С точки зрения веб-сервера быстрый способ подать материал состоит в том, чтобы указать на него непосредственно. Если это находится в базе данных - крыло Sharepoint - у Вас есть издержки ADO.NET, чтобы вытащить его, передать его потоком, и т.д.

, Documentum - в то время как чрезмерно увеличенный в размере и сложный - имеет его прямо в этом, файлы отсутствуют на доле и доступны для Вас, чтобы определить, как сохранить их - диск на сервере, SAN, NAS, безотносительно. Стратегия Documentum состоит в том, чтобы хранить файлы древовидная структура путем кодирования папок и имен файлов согласно их первичному ключу в DB. DB становится ресурсом для знания, что файлы что и для осуществления безопасности. Для систем большого объема этот тип подхода является хорошим способом пойти.

Также рассматривают это при контакте с метаданными: если когда-либо необходимо обновлять атрибуты корпуса метаданных, DB является другом, поскольку можно быстро выполнить обновления с SQL. С другими системами меток у Вас нет легких инструментов манипулирования данными под рукой

8
задан sharptooth 10 July 2009 в 09:29
поделиться

9 ответов

Эти операторы (называемые выражениями-операторами в грамматике C ++) действительны, потому что они являются выражениями.

Все выражения - это конструкции, которые вычисляют какое-то значение, например

  • 3 + 5
  • someVariable
  • someFunctionCall (2)
  • someVar + = 62
  • val> 53

Я думаю, чтобы не усложнять грамматику, они решили не различать те выражения, которые на самом деле имеют сторону эффект (например, вызов функции или присвоение) и те, которые этого не делают.

7
ответ дан 5 December 2019 в 04:58
поделиться

Они не имеют практического применения, кроме подавления предупреждений компилятора, и, как правило, компилятор игнорирует любой такой оператор с постоянным значением, который не имеет побочного эффекта.

1
ответ дан 5 December 2019 в 04:58
поделиться

Этот вид утверждений является логическим расширением того, как работают другие части языка. Рассмотрим функцию, которая возвращает значение, например int foo () , что также имеет некоторые побочные эффекты. Иногда вы хотите, чтобы произошли только эти побочные эффекты, поэтому вы пишете foo (); как оператор.

Теперь, хотя это не выглядит точно так же, как 10; , функция call рано или поздно вернет результат в int, и с этим int ничего не произойдет, как и в случае с 10; .

Другой пример той же проблемы: поскольку вы можете сделать a = b = 10; , это означает, что b = 10 должен оцениваться как 10 , следовательно, вы не можете выполнить присваивание без создания значения, которое должно быть подавлено.

26
ответ дан 5 December 2019 в 04:58
поделиться

Такой оператор ничего не делает и, скорее всего, будет оптимизирован любым подходящим компилятором.

Это может быть полезно для избавления от предупреждения о неиспользуемой переменной , но с некоторыми компиляторами вместо этого вы можете получить инструкцию , не имеющую эффекта .

3
ответ дан 5 December 2019 в 04:58
поделиться

Это выражения, которые будут оцениваться, если компилятор не оптимизирует их. Что касается «значения», я не совсем понимаю, что вы «имеете в виду»!

0
ответ дан 5 December 2019 в 04:58
поделиться

Несмотря на то, что это законно, я думаю, что эти утверждения сбивают с толку и их следует избегать, даже для подавления предупреждений. Для меня более разумно подавить предупреждение, используя что-то вроде этого:

int result = 0;
result = obtainResult();
assert (result > 0);
0
ответ дан 5 December 2019 в 04:58
поделиться

В C и C ++ оценивается оператор, который является просто выражением.

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

Обратите внимание, что операторы, содержащие только выражение, довольно распространены. Например, простой вызов функции. В printf ("hello, world. \ N"); возвращаемое значение printf () игнорируется, но функция по-прежнему вызывается и ее ожидаемый эффект (вывод текста) происходит .

Кроме того, присвоение переменной x = 3; также является оператором, состоящим из простого выражения, поскольку присвоение является оператором и возвращает значение в дополнение к побочному эффекту изменения lvalue.

0
ответ дан 5 December 2019 в 04:58
поделиться

В некоторых встроенных средах доступ к регистр только для чтения будет иметь побочные эффекты, например очистить его.

Запись int temp = IV; чтобы очистить его, выдается предупреждение, потому что temp не используется, и в этом случае я пишу IV;

0
ответ дан 5 December 2019 в 04:58
поделиться

Я согласен с ответом Магнуса. Но есть одна вещь, которая меня озадачивает: почему вы используете эту ерунду

int result = obtainResult();
result; // looks totally useless

, чтобы избавиться от предупреждений компилятора? По моему скромному мнению, в такой ситуации гораздо хуже НЕ иметь предупреждения. Переменная result по-прежнему не используется - вы просто «заметили грязь под ковер». Такой подход с использованием «одной переменной» выглядит так, как будто чего-то не хватает ( Я случайно что-то удалил? ). Почему вы вообще не используете

(void)obtainResult();

? Он убеждает любого, кто будет читать ваш код, что вас не волнует результат возврата. Это очень сложно поставить «случайно». Очевидно, это не вызывает предупреждений компилятора.

0
ответ дан 5 December 2019 в 04:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: