Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нахождение суммы s(x) через for https://www.cyberforum.ru/ cpp-beginners/ thread1836251.html
s(x) = ∑ (-1)^k * ((1+x)^2k)/k s(x)=\sum {(-1)}^{k}\frac{({1+x)}^{2k}}{k}
Стоит ли использовать "using namespace std"? C++
В разных источниках все по-разному относятся к этой строчке. Почему ее стоит или не стоит использовать? Чем лучше std::cout. Что используется в реальной жизни?
C++ Создать класс "Анкета" и производные классы https://www.cyberforum.ru/ cpp-beginners/ thread1836207.html
Друзья, нужна помощь, задача такова: Реализовать класс "Анкета" , который будет включать в себя поля: имя, фамилию, отчество, год рождения и методы, позволяющие изменять/получать значения этих полей, и от них нужно реализовать производные классы: 1) «Преподаватель университета» с полями: должность, ученая степень, специальность, список научных трудов (массив строк); 2) «Член комиссии» с полями:...
C++ В квадратной матрице размером n найти наименьший элемент, находящийся в заштрихованной области В заданной квадратной матрице размером n найти наименьший элемент, находящийся в соответствующей заштрихованной области. https://www.cyberforum.ru/ cpp-beginners/ thread1836206.html
C++ Ошибка компиляции "expected ; before }"
Ошибка в программе. Что не так? П.5.18.Правил Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.
C++ Площадь в ДСК https://www.cyberforum.ru/ cpp-beginners/ thread1836193.html
Как вычислить площадь восьмиугольника , треугольника ,правильного шестиугольника и трапеции(не криволинейной) в С++?
C++ В заданном двухмерном массиве заменить нулями элементы, стоящие в строках или столбцах, где есть нули https://www.cyberforum.ru/ cpp-beginners/ thread1836191.html
В заданном двухмерном массиве заменить нулями элементы, стоящие в строках или столбцах, где есть нули. Дополнительного двумерного массива не использовать
Не заполняются элементы структуры в функции C++
#include <iostream> #include <ctime> #include <cstdlib> #include <string> using namespace std; void structadd(struct student*);
C++ Сколько букв останется на своих местах в данной строке, если ее перевернуть https://www.cyberforum.ru/ cpp-beginners/ thread1836141.html
Сколько букв останется на своих местах в данной строке, если ее перевернуть. (С вводам и выводам.)
C++ Вычислить значение выражения const n =...; double x , y; Напишите программу для вычисления, с вводам и выводам. y=X1*X2*Xn-1+...+(-1)i+1*Xi*Xn+1-i+...+(-1)n+1*Xn*X1 https://www.cyberforum.ru/ cpp-beginners/ thread1836138.html
C++ Stalin.exe has triggered a breakpoint
Здравствуйте! У меня возникла проблема, по которой я не могу найти решения в интернете. Собственно, после введения любой строки в консоли и нажатия ENTER вылетает ошибка, как на скрине - Stalin.exe has triggered a breakpoint, и в debug output "Critical error detected c0000374" Если кто то понимает, в чём моя ошибка, буду рад услышать. Заранее благодарен. P.S. Код: main.cpp: #include...
C++ Ошибка "идентификатор не определен" при создании производного класса https://www.cyberforum.ru/ cpp-beginners/ thread1836121.html
всем доброго времени суток. пытаюсь создать производный класс для machine, в котором нужно вывести всё, что ввёл, но компилятор почему-то не видит эти переменные и выдает "идентификатор не определен". в чём проблема? В базовом классе доступ к переменным сделал public, всё равно не помогает #include <iostream> //#include "unit.h" using namespace std; class machine { public:
Вездепух
Эксперт CЭксперт С++
11691 / 6370 / 1723
Регистрация: 18.10.2014
Сообщений: 16,052
28.10.2016, 00:20 0

Объясните непрогнозируемый результат переполнение типа char - C++ - Ответ 9697375

28.10.2016, 00:20. Показов 3933. Ответов 6
Метки (Все метки)

Лучший ответ Сообщение было отмечено Denuha как решение

Решение

Цитата Сообщение от Denuha Посмотреть сообщение
char занимает один байт (беззнаковый)
char занимает один "байт" с количеством битов, определяемым реализацией. Чаще всего это 8.

Тип char является знаковым или беззнаковым в зависимости от реализации. Чаще всего он знаковый (по крайней мере по умолчанию). Знаковый он и в вашем случае. Т.е. диапазон его в вашем случае [-128, 127], а не [0, 255], как вы неверно предположили.

Переполнение знакового типа при конвертации приводит к результатам, определяемым реализацией. Сам язык тут никаких гарантий не дает.

У вас скорее всего просто остаются младшие 8 битов значения. Какой при этом получится результат - отрицательный или положительный - зависит от того, попадет ли в знаковый (старший) бит 0 или 1.

Например, 35010 - это 1010111102. Оставляем 8 битов 010111102 = 9410. 40010 - это 1100100002. Поэтому и получилось отрицательное значение 100100002 = -11210.

При передаче в variadic функцию, такую как printf, значения типа char конвертируются к типу int. -11210 в 32-битном типе int - это 111111111111111111111111100100002. При попытке "проинтерпретировать" это значение как unsigned int вы получили 429496718410.

Вот и все.

Вернуться к обсуждению:
Объясните непрогнозируемый результат переполнение типа char C++
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2016, 00:20
Готовые ответы и решения:

Объясните как правильно сравнить переменные типа char
Испульзую (strcmp(a.StNazn,c)==0) Не работает. Если поменять на (strcmp(a.StNazn,c)&lt;0) ...

Условие типа if( масив типа char[x] [y] != переменная типа char) не срабатывает
Создал функцию ChangeWay(). Все, кроме if(map !=ar) (обе переменные типа char) работает...

Аргумент типа (const char*) несовместим с параметром типа (char*). Как исправить?
#include &quot;Table.h&quot; #include &quot;Contour.h&quot; #include &quot;TwoShape.h&quot; #include &lt;iostream&gt; int...

Как полю класса типа char* присвоить значение типа *char
Проблема в строчке 46 (не пинайте сильно за формат кода и за говнокод) #include &quot;stdafx.h&quot; ...

6
28.10.2016, 00:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2016, 00:20
Помогаю со студенческими работами здесь

Аргумент типа const char* несовместим с параметром типа char* в классе
Данную ошибку находит в 74 - 76 строках, не могу понять что не так. #include &lt;iostream&gt; #include...

Значение типа const char * нельзя присвоить сущности типа char *
Добрый день. Я новичок в c++ и столкнулся с проблемой при написании маленькой программы. Собственно...

Аргумент типа const char несовместим с параметром типа char
Есть код: #include &quot;stdafx.h&quot; #include &lt;windows.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; ...

Аргумент типа char** не совместим с параметром типа const char*
Программа должна позволять заносить в структуру данные и выводить на экран информацию о поездах,...

Добавление в массив типа char * одного элемента типа char
Дан класс Строка, содержащий указатель на char - адрес динамически выделенной для размещения...

Аргумент типа char (*)[1000] несовместим с параметром типа char**
Здравствуйте! Есть вот такая структура: #define max 1000 struct expr { char s; int...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru