реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> 32-битную переменную не получается заполнить двоичными единичками, Работаю в SDK от Xilinx, это допиленный Eclipse, компилятор GCC
Krys
сообщение Dec 26 2014, 08:48
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Ну вот посмотрите в сообщении #10 информацию о версии. Работает на железе. Встраиваемый софтовый проц на ПЛИС. Исходников наверное нет... Т.к. он допилен компанией Xilinx под свои продукты.


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 26 2014, 08:54
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Krys @ Dec 26 2014, 11:48) *
Работает на железе. Встраиваемый софтовый проц на ПЛИС.

А, ну если на железе, тогда другое дело. В конце концов, даже в софтовом проце можно инструкции сдвига поменять или просто перепутать, а в исходниках компилятора напортачить ещё проще :-)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 26 2014, 10:26
Сообщение #18


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(scifi @ Dec 26 2014, 09:29) *
Если это так, то компилятор глючный донельзя :-)
Как раз нет. Все в пределах стандарта:
Цитата
3 The integer promotions are performed on each of the operands. The type of the result is
that of the promoted left operand. If the value of the right operand is negative or is
greater than or equal to the width of the promoted left operand, the behavior is undefined.


"Незнание закона не освобождает от ответственности".


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Krys
сообщение Dec 26 2014, 10:50
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Цитата(Сергей Борщ @ Dec 26 2014, 16:26) *
the behavior is undefined.
Стандарт на неопределённость поведения )))


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 26 2014, 12:15
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Сергей Борщ @ Dec 26 2014, 13:26) *
Как раз нет. Все в пределах стандарта:

"Незнание закона не освобождает от ответственности".

Тады ой.
Go to the top of the page
 
+Quote Post
WitFed
сообщение Dec 26 2014, 13:16
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 271
Регистрация: 6-12-11
Из: Taganrog
Пользователь №: 68 701



А я в последнее время для FFFFFFFF пишу = 0-1, это короче, и никто варнингов почему-то не выдаёт.
Но ~0 ещё короче. Или я что-то не так понял в условиях ?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 26 2014, 14:04
Сообщение #22


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(WitFed @ Dec 26 2014, 15:16) *
Или я что-то не так понял в условиях ?
На некоторых архитектурах, на которых int 16-битный, выражение uint32_t min_per = 0 - 1; (хотя 0 здесь лишний, просто -1 дает тот же результат) присвоит min_per значение 0x0000FFFF. Наверное самым коротким и правильным была бы запись uint32_t min_per = -(uint32_t)1;


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 04:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01407 секунд с 7
ELECTRONIX ©2004-2016