#include <stdio.h>
int main(void)
{
puts(0x8000L==0x8000 ? "YES" : "NO");
puts(0x8000L==0x8000D ? "YES" : "NO");
return 0;
}
YES
NO
Хакер писал(а):Но в рамках этой темы речь шла о том, что сравнение этих двух значений этих двух разных типов будет давать один и тот же результат во всех языках, в которых такие типы есть.
В нём говорится именно о записи значений, а не о типах данных. И именно для такой записи я показал, что на Си результат будет true.ger_kar писал(а):А разве не должно? Два сравниваются два одинаковых значения в итоге должно быть True. Даже если тип и другой, но значение то одинаковые!
Qwertiy писал(а):Берём 16-разрядный Borland C++ 3.1 b компилируем в нём
Qwertiy писал(а):Как раз наоборот. Вот исходный вопрос:
Почему при сравнивании двух значений, запись которых отличается всего лишь на один символ, получается результат «не равно»
Хакер писал(а):Это не исходный вопрос. И он содержит ошибку
Хакер писал(а):По сути, единственный правильный вариант вопрос такой:
Хакер писал(а):Не имеем права. Речь идёт о сравнении signed int16 и signed int32.
Мое мнение на сей счет таково. Придумано все было криво изначально и из-за это весь сыр бор, надо было делать, как указывал Майкл. Если число положительное либо отрицательное, то и запись его должна содержать знак, без разнице в какой системе счисления идет запись, тогда было бы все просто и логично.Qwertiy писал(а):Всё-таки интересно мнение тех, кто спрашивал.
ger_kar писал(а):Если число положительное либо отрицательное, то и запись его должна содержать знак, без разнице в какой системе счисления идет запись, тогда было бы все просто и логично.
Qwertiy писал(а):А кто мешает записать число с минусом?
Если бы минуса не существовало, то и этот вопрос, с которого началась тема не возник бы. Да если представить запись в двоичном виде, то для &H8000& и &H8000 набор нулей и единиц будет одинаковым, но у процессора есть инструкции сравнения, которые учитывают именно знак числа и из за этого весь сыр бор.Debugger писал(а):минуса не существует.
ger_kar писал(а):Да если представить запись в двоичном виде, то для &H8000& и &H8000 набор нулей и единиц будет одинаковым,
Хакер писал(а):Ты прикалываешься, или действительно считаешь, что unsigned и int — это два разных типа, а не тип и просто-модификатор, который можно приписать к любому целочисленному типу?
Dim a As Single
a = &H3FC00000!
ger_kar писал(а):Ну увеличилась разрядность и всего.
ger_kar писал(а):Можно например сравнить регистры ACX и BCX, или AX и BX, но не ACX и BX.
ger_kar писал(а):Поэтому либо к правому значению добавятся незначащие нули слева, либо у левого значения они усекутся, Поэтому сравнивать придется либо
ger_kar писал(а):Поэтому сравнивать придется либо
00000000000000001000000000000000 и 00000000000000001000000000000000 либо
1000000000000000 и 1000000000000000
Так что разницы в нулях и единицах для операции сравнения не будет.
Mikle писал(а):Вообще-то, типы, всё-таки, разные.
Mikle писал(а):Тогда, действительно, минус для отрицательных не нужен, десятичному разделителю - не место в записи, мы просто указываем порядок битов в константе и, с помощью модификатора "!", указываем тип так же, как указываем тип Long модификатором "&".
Самое странное, что я знаю, как правильно писать названия регистров, но почему я так лоханулся и написал такую чушь, сам сейчас сижу и не понимаю. Какие нафиг ACX и BCX, когда EAX и EBX. Видимо был полусонный Ну что же теперь, лоханулся и поделом!Хакер писал(а):Не нужно писать о регистрах, даже если не можешь правильно написать названия регистров.
Ну мне конечно трудно оценивать уровень своих знаний, тебе конечно виднее, но я очень люблю всяческие дискусии, а иногда, так и тянет, высказаться.Хакер писал(а):Проблема в том, что ты вступаешь в спор, совершенно не «рубя фишку». То есть с твоим уровнем знаний надо молчать и слушать.
Хакер писал(а):Единственное послабление в VB, которое сделали hex-контстантам, так это то, что унарный минус может их переполнять безнаказанно, а десятичные — нет.
?-(-&h80000000)
-2147483648
?-(-2147483648)
2147483648
Хакер писал(а):В первом случае было переполнение без генерации ошибки, во втором поменялся тип.
Сейчас этот форум просматривают: AhrefsBot, Google-бот, Yandex-бот и гости: 46