Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2013, 08:36   #11
and150382
Форумчанин
 
Регистрация: 19.10.2012
Сообщений: 217
По умолчанию

Спасибо всем за помощь!!!
and150382 вне форума Ответить с цитированием
Старый 01.02.2013, 10:12   #12
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Я и имел в виду "- Operator". Два минуса - это два таких оператора подряд.
Интересно, что при работе с числовыми типами этот оператор не меняет тип, за исключением Byte, а при работе с текстом всегда преобразует в Double:
Код:
?typename(-1)
Integer
?typename(-1&)
Long
?typename(-1!)
Single
?typename(-1#)
Double
?typename(-1@)
Currency
?typename(-cdec(1))
Decimal
?typename(-now)
Date

?typename(-cbyte(1))
Integer
?typename(-"1")
Double
?typename(-"&hFF")
Double
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 01.02.2013, 10:19   #13
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 906
По умолчанию

Казанский, когда в коде пишут, например, -2, то эту запись компьютер делает вот так?
-1 * 2

Это из математики?

Т.е. компьютер вот так видит запись --"2" (число 2 в кавычках означает, что число представлено как текст и не является ещё числом):
-1 * - 1 * "2"

Действия компьютера:
  1. Сначала компьютер проверяет, можно ли с данными провести математические действия.
  2. Компьютер видит, что в выражении есть текст "2".
  3. Компьютер преобразует этот текст в число, т.к. с текстом нельзя проводить математических действий.
  4. Затем, когда всё готово к вычислению, компьютер умножает -1 на -1. Получается 1.
  5. Затем 1 уножается на число 2.
  6. В результате получаем число 2.
Т.е. компьютер преобразует текст в число уже на третьем шаге. А дальше делаются просто ненужные математические действия.


Тогда такое выражение:
--"2"

можно заменить вот таким:
1*"2"

Так?

Последний раз редактировалось Скрипт; 01.02.2013 в 10:52.
Скрипт вне форума Ответить с цитированием
Старый 01.02.2013, 10:50   #14
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Сообщение от Скрипт Посмотреть сообщение
Казанский, когда в коде пишут, например, -2, то эту запись компьютер делает вот так?
-1 * 2

Это из математики?

Т.е. компьютер вот так видит запись --"2" (число 2 в кавычках означает, что число представлено как текст и не является ещё числом):
-1 * - 1 * "2"

Действия компьютера:
  1. Сначала -1 умножается на -1. Получается 1.
  2. Затем 1 уножается на текст "2". В этом случае происходит два действия:
    1. если текст может быть числом, то текст превращается в число;
    2. полученное число умножается на 1.
В результате получаем из текста число.

Так?
Вообще-то все это зависит непосредственно от компилятора/интерпретатора.
В данном контексте, конструкция типа -V, где V as Variant, интерпретируется как -CDbl(V) при более коротком варианте написания.


з.ы. процессору для получения отрицательного числа не нужно умножать на -1 - для этого есть специальная команда процессора.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод информации из одного пользовательского формата в другой УрбанСникерс Microsoft Office Excel 5 12.10.2012 11:45
перевод из символьного в числовой ya.kudr Общие вопросы C/C++ 11 15.01.2010 00:16
Автоматический перевод времени с гринвича. Demien Общие вопросы Delphi 0 27.08.2009 12:02
автоматический перевод с английского Alar Общие вопросы Delphi 5 04.04.2008 18:23
Перевод кодов символов формата Unicode в строку sshaitan Общие вопросы Delphi 0 12.09.2007 19:09