С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564

Лимит char в msvc

23.03.2015, 00:05. Показов 2058. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В настройках не ставил /J. Однако почему то компилятор не выдаёт ошибку если пишу:
C++
1
char ftp = -100;
C++
1
char ftp = 250;
По дефолту char без /J является signed, должен иметь лимит -128 : +127.
Даже сама функция показывает что лимит MAX для char это 127.
C++
1
int fMax = numeric_limits<char>::max();
Почему не выводится ошибка?

Добавлено через 7 часов 56 минут
Up.. =)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.03.2015, 00:05
Ответы с готовыми решениями:

Почему в MSVC++ 2008 компилируется, а в MSVC++ 2010 вылезает много ошибок?
Кстати, перед запуском в 2010 предлагает конвертировать код. Ну а чем эти две студии отличаются, что вызывает большое количество ошибок?

Переход от MSVC 2017 к MSVC 2019
Добрый день, До сих пор я использовал MSVC 2017 x64, но планирую перейти на компилятор MSVC 2019 x64 в связи с тем, что 2017 не...

Char unsigned char signed char длинна Кааак
Здравствуйте. char l = {0,0}; l = 0xff; Почему, меня, компилятор не посылает куда подальше. Нет он конечно...

29
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
23.03.2015, 00:13
C++
1
char ftp = {-100};
http://rextester.com/JPC73933
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
23.03.2015, 00:38  [ТС]
Croessmah, с чего это фигурные скобки? На сколько я знаю они используются для массивов...
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
23.03.2015, 00:43
Stroustrup: preventing narrowing
1
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
23.03.2015, 00:52
Цитата Сообщение от Izual Посмотреть сообщение
char ftp = 250;
ну и приводит он к -6, ибо и то и другое 0xFA
если напишешь так
char ftp = 'я';
код я 0xFF ему верещать или нет -1 это или 255?
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
23.03.2015, 01:03  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
ну и приводит он к -6
Правило лимита есть, но оно не выполняется, вот это странно. И ладно, если бы хотя бы warning был, но даже его нет.
Мде...
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
23.03.2015, 01:11
Цитата Сообщение от Izual Посмотреть сообщение
Правило лимита есть, но оно не выполняется, вот это странно.
что то я ни в одном компиляторе не встречал, за разрядную сетку ведь не вылазит
а если я так напишу
C++
1
2
char a=127;
a++;
верещать ему или нет?
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
23.03.2015, 01:23  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
за разрядную сетку ведь не вылазит
Не вылазиет по причине "преобразования числа"(или как это называется), как это блин что 250 и -6 стали одинаковыми числами, бредово..
Цитата Сообщение от ValeryS Посмотреть сообщение
ни в одном компиляторе не встречал
Дальше чё? Вон пол европпы геи, и они думают что это нормально. Большинство голосов (да хоть миллиард против 1) ещё не говорит о том что это правильно. Если лимит char (signed char) 127, то компилятор по логике должен выдать ошибку или бросить throw/exception или что то в этом духе, но ни как не делать из 250 > -6

Цитата Сообщение от ValeryS Посмотреть сообщение
верещать ему или нет?
выбросить ошибку переполнения типа. exception. (хотя я с exception ещё мало знаком, только разбираюсь, но оно на то и сделано, чтоб "предотвращять несостыковки" (по крайней мере по логике так должно быть).
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
23.03.2015, 03:10
Цитата Сообщение от Izual Посмотреть сообщение
выбросить ошибку переполнения типа. exception.
такое никогда не будет в плюсах, потому что это сильно не эффективно.

а некоторые люди сознательно избегают эксепшенов,
что бы не иметь потерь эффективности.
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
23.03.2015, 06:28
Цитата Сообщение от Izual Посмотреть сообщение
Не вылазиет по причине "преобразования числа"(или как это называется), как это блин что 250 и -6 стали одинаковыми числами, бредово..
изучи как представляются числа в машине и что такое прямой, обратный дополнительный код
Цитата Сообщение от Izual Посмотреть сообщение
Если лимит char (signed char) 127, то компилятор по логике должен выдать ошибку или бросить throw/exception или что то в этом духе, но ни как не делать из 250 > -6
"А кто тебе мешает выдумать порох непромокаемый"(с) Козьма Прутков
Напиши свою реализацию, только это будет уже не Си
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
23.03.2015, 06:33  [ТС]
Цитата Сообщение от hoggy Посмотреть сообщение
а некоторые люди сознательно избегают эксепшенов
Да пусть хотя бы error какой нить будет.
Но никак не 250 == -6
Казалось бы очевидно, что могли бы разработчики позаботиться об этом, но нет... сделали через Ж***.
Цитата Сообщение от hoggy Посмотреть сообщение
не иметь потерь эффективности
Эффективная ошибка выйдет боком. Вот вам и золотая середина)))

П.С. Вообще в последнее время начинает казаться что сам язык "С" (не говорю уж о плюсах) сильно хромает, привязанность к статике (да и ладно бы та, что не мешает, но ведь кучу излишеств можно было динамично сделать), типовые неудобства, чую что пока я допишу свой интерпритатор вылезит ещё десяток неурядиц, от которых потом уже тошнить начнёт.

Добавлено через 2 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
как представляются числа в машине
Это и так понятно. Принцип двоичного кода ещё в школе изучали.
Цитата Сообщение от ValeryS Посмотреть сообщение
прямой, обратный дополнительный код
Изподвыподверта)))
Цитата Сообщение от ValeryS Посмотреть сообщение
Напиши свою реализацию, только это будет уже не Си
Даёш пару миллионов и команду разработчиков))
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
23.03.2015, 06:38
Цитата Сообщение от Izual Посмотреть сообщение
сделали через Ж***
нормально сделали. У программиста совесть есть, пусть и заботится. Кому надо использует, кому не надо - нет.
Цитата Сообщение от Izual Посмотреть сообщение
Эффективная ошибка выйдет боком. Вот вам и золотая середина)))
Да не выйдет. что 255, что -1 - одно и то же.
Цитата Сообщение от Izual Посмотреть сообщение
кучу излишеств можно было динамично сделать
Не желают люди платить за то, что не используют. Нужна динамика, возьмите другой язык или пишите свою динамику по мере надобности.
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
23.03.2015, 07:03  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
Да не выйдет. что 255, что -1 - одно и то же.
Это вы так говорите, потому что используете char только в обычных целях.
А я вот char вижу не только как 255 символов, а ещё и как 255 чисел - 1 байтный тип оч экономный))
Вот например при использовании 255 оттенков каждого из RGB. И уже чую что будут траблы если не напишу свою функцию проверки лимита, причём проверять придётся через другой тип(например short или int), т.к. на сколько я понял, если я пишу:
C++
1
char ftp = 250;
то при обратном выводе ftp даст значение -6, кстати пойду тестить.


Цитата Сообщение от Croessmah Посмотреть сообщение
возьмите другой язык или пишите свою динамику по мере надобности
Это называется "проще сказать чем сделать".
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
23.03.2015, 07:11
Цитата Сообщение от Izual Посмотреть сообщение
char ftp = 250;
написать
C
1
unsigned char  ftp = 250;
религия не позволяет?
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
23.03.2015, 07:16  [ТС]
ValeryS, ты первый пост читал?.. Или ещё не проснулся?.. Или поделись тем что курил. ~ ~
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
23.03.2015, 07:17
А я вот char вижу не только как 255 символов, а ещё и как 255 чисел - 1 байтный тип оч экономный))
Срочно пишите свою книгу "Как использовать char", пока у Вас не украли идею уникального использования переменных этого типа
религия не позволяет?
Предпочитаю uint8_t писать
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
23.03.2015, 07:21
Цитата Сообщение от Izual Посмотреть сообщение
ты первый пост читал?..
и что я должен из него вынести?
есть три типа
unsigned char беззнаковый тип
signed char знаковый тип
char который принимает или знаковый или беззнаковый, в зависимости от компилятора и его настроек
Цитата Сообщение от Izual Посмотреть сообщение
По дефолту char без /J является signed, должен иметь лимит
судя по ключу работаем с VS а вот например CVAvr по умолчанию делает char беззнаковым
и если не хочешь попасть в зависимость от компилятора, пиши явно тип
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
23.03.2015, 07:22  [ТС]
Croessmah, вы оба курили что то?.. Речь была именно о signed char (т.к. изначально говорилось о том что тип char без настройки /J)

Мде, как со стенкой... True программеры не сидят видимо на форуме, только курящие))
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
23.03.2015, 07:23
Цитата Сообщение от Croessmah Посмотреть сообщение
Предпочитаю uint8_t писать
тоже выход

Добавлено через 1 минуту
Цитата Сообщение от Izual Посмотреть сообщение
Речь была именно о signed char
иде???
Цитата Сообщение от Izual Посмотреть сообщение
char ftp
где написано что char должен быть обязательно signed?
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
23.03.2015, 07:24  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
иде???
На заборе.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.03.2015, 07:24
Помогаю со студенческими работами здесь

Методы Char.IsLower Char.IsUpper Char.IsDigit
Доброго времени суток, месяц назад сделал задание: С помощью перебора всех символов строки, введенной в текстовое поле, вычислите...

char* to char или (char* запись в файл)
Привет всем! Вопрос: Как можно перевести char* в char или записать даные в файл с char*? Пробовал так: char *szBuffer =...

Ошибка: "char *concat(char *,.)": невозможно преобразовать аргумент 1 из "const char [4]" в "char *"
делал задание, но на строке 36 строке пишет, что &quot;char *concat(char *,...)&quot;: невозможно преобразовать аргумент 1 из &quot;const char &quot;...

CONST_RETURN char *__cdecl strstr (const char *_Str, const char *_SubStr)
#include &lt;stdio.h&gt; #include &lt;string.h&gt; char tracks = { &quot;ya ostavil svoe serdce v harvardskom med univere&quot;, &quot;NewYork New York...

Qt 5.7 MSVC and C++11
Вообщем, почему то не видит умные указатели (std::shared_ptr), которые как я понимаю должны быть в STD с С++11. Получается не подключен...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru