Целочисленное округление с делением на негативы в C ++

UPDATE (SELECT T.FIELD A, S.FIELD B
FROM TABLE_T T INNER JOIN TABLE_S S
ON T.ID = S.ID)
SET B = A;

A и B являются псевдонимами, вам не нужно указывать таблицу.

30
задан 17 of 26 21 May 2009 в 14:10
поделиться

2 ответа

Согласно пересмотру в мае 2008,

Вы правы:

двоичный файл / оператор приводит к частному, и двоичный оператор % приводит к остатку от подразделения первого выражения вторым. Если второй операнд / или % является нулем, поведение не определено; иначе (a/b) *b + a%b равен a. Если оба операнда являются неотрицательными тогда, остаток является неотрицательным; в противном случае знак остатка является реализацией-defined75).

в Примечании 75 говорится:

Согласно работе в стадии реализации к пересмотру ISO C, предпочтительный алгоритм для целочисленного деления следует правилам, определенным в стандарте Фортрана ISO, ISO/IEC 1539:1991, в котором частное всегда округляется к нулю.

Возможности состоят в том, что C++ изолирует C в этом отношении. В настоящий момент это не определено, но они понимают толк к изменению его.

я работаю в том же отделе Stroustrup и с членом комитета. Вещи берут ВОЗРАСТЫ, которые будут выполнены, и его бесконечно политический. Если это кажется глупым, это, вероятно.

22
ответ дан Stefan Mai 21 May 2009 в 14:10
поделиться

Просто комментарий. Текущий рабочий проект для стандарта C++ действительно исправляет "определенную реализацией" проблему и просит усечение по направлению к нулю. Здесь веб-страница комитета, и здесь проект. Проблема на уровне страницы 112.

7
ответ дан Federico A. Ramponi 21 May 2009 в 14:10
поделиться
Другие вопросы по тегам:

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