spamsink: (lenin)
[personal profile] spamsink


Си(++):

unsigned short a = ~0;
unsigned char b = 0;
bool c = a >= b - 1;

c истинно.

Верилог:

wire [15:0] a = ~0;
wire [7:0] b = 0;
wire c = a >= b - 1;

с ложно.

Какой результат вам больше нравится?

Date: 2014-01-04 01:04 am (UTC)
From: [identity profile] fregimus.livejournal.com
Мне оба одинаково не нравятся…

Date: 2014-01-04 02:13 am (UTC)
From: [identity profile] fregimus.livejournal.com
Где типы явно приводятся, т. е. сравнение — ошибка компиляции.

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

Date: 2014-01-22 04:01 am (UTC)
From: [identity profile] e2pii1.livejournal.com
в приличном С++ компиляторе будет warning на сравнение signed/unsigned. Этого достаточно.

Date: 2014-01-04 01:05 am (UTC)
From: [identity profile] amigofriend.livejournal.com
Тоже мне бином ньютона!

тому кто любит сложности -
c ложно
тому кто любит женщин -
c истинно!

Date: 2014-01-04 01:19 am (UTC)
From: [identity profile] amigofriend.livejournal.com
не мог он си от верилога
как мы ни бились отличить
но тему мог зато раскрыть!

Date: 2014-01-04 01:19 am (UTC)
From: [identity profile] archaicos.livejournal.com
Уж что стандартизировали. :)

Date: 2014-01-04 01:44 am (UTC)
From: [identity profile] archaicos.livejournal.com
Должен заметить, что и поведение в C(++) нужно запомнить. :)

Date: 2014-01-04 05:31 am (UTC)
From: [identity profile] archaicos.livejournal.com
Да, one не должен forget что and где.

Date: 2014-01-04 01:58 am (UTC)
From: [identity profile] juan-gandhi.livejournal.com
первый

Date: 2014-01-04 03:36 am (UTC)
From: [identity profile] morfizm.livejournal.com
Первый.

Я считаю, что неявные касты и численные сравнения для разных типов допустимы только в C и в C++, исключительно из уважения к истории.

В во всех остальных языках это выглядит отвратительно. Надо требовать явный каст на этапе компиляции.

Date: 2014-01-04 04:44 am (UTC)
From: [identity profile] morfizm.livejournal.com
В отношении года создания - да, справедливо. Но про Верилог я узнал только сегодня, а про C++ я знал почти с самого начала.

Можно примеры? (Если не белиберды, то хотя бы языков, где вы её видели).

Date: 2014-01-04 05:06 am (UTC)
From: [identity profile] morfizm.livejournal.com
Спасибо! Интересная штука.

Date: 2014-01-04 05:36 am (UTC)
From: [identity profile] archaicos.livejournal.com
Сравнения (на равенство, больше-меньше, я о целых и вещественных числах) должны быть автоматически математические без требования явного приведения типов в коде программистом, даже если язык поддерживает целочисленные типы со знаком и без. Прошлый век же такое требовать или за кулисами нематематически приводить знаковые к беззнаковым, ломая простую и понятную всем математическую идиому.

Date: 2014-01-04 06:51 am (UTC)
From: [identity profile] archaicos.livejournal.com
Много чего бывает. В мире полно кода, где неправильно сравниваются signed и unsigned.
Page generated Mar. 6th, 2026 03:20 am
Powered by Dreamwidth Studios