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

 
 
> Странный дефайн
Jenya7
сообщение Oct 1 2017, 09:21
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Встретился мне такой дефайн
Код
#define STATE1  (char)-1
#define STATE2  (char)-2

это как?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sigmaN
сообщение Oct 5 2017, 08:02
Сообщение #2


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Цитата
В if работает "неявное" приведение типов, но иногда ОНО справится не может, тогда и указывают тип явно.
Иногда, это по настроению или как? wink.gif
Читать https://www.securecoding.cert.org/confluenc...onversion+rules
гуглить c integer promotion rules


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 5 2017, 08:40
Сообщение #3


Гуру
******

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



QUOTE (sigmaN @ Oct 5 2017, 11:02) *
Иногда, это по настроению или как? wink.gif
Иногда - это значит, что знаковость char стандартом не определена. В одном компиляторе по умолчанию он может быть знаковым, а в другом - беззнаковым. Знаковость char по умолчанию может меняться от версии к версии. Для криворуких программистов сделали возможность задавать ее ключами компилятора. Более пряморукие используют char только для хранения символов, для байтов используют (un)signed char. Самые правильные программисты используют char для символов, а для байтов используют uint(_fast|_least)8_t.

В данном случае без явного приведения будет предупреждение, если char вдруг окажется беззнаковым.


--------------------
На любой вопрос даю любой ответ
"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



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

 


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


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