Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Guyver
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 19
#1

Ошибка в преобразовании типов - C++

04.12.2013, 10:58. Просмотров 259. Ответов 9
Метки нет (Все метки)

Здравствуйте. Я написал программу, которая преобразует int в char через указатель. Программа работает, но криво. Например при вводе числа 222 выводит отрицательное значение, а так быть не должно. Помогите найти ошибку, заранее спасибо )
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <stdio.h>
using namespace std;
 
int main()
{
    int i, *p;
    cout<<"i="; cin>>i;
    p=&i;
    printf("%d\n", *((char*)p));
    system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2013, 10:58     Ошибка в преобразовании типов
Посмотрите здесь:

C++ о преобразовании типов - C++
Привет всем! Начал этот суперзык изучать и столкнулся с неразрешимой задачей для меня. //Провайдер вам говорит, что суммарная...

Странное поведение при преобразовании типов - C++
Доброго времени суток! Помогал товарищу написать простенькую программу. Задача состояла в том, чтобы при введенном дробном числе...

Почему конструктор вызывается повторно при преобразовании типов? - C++
В качестве примера предлагаю рассмотреть примерчик из учебника. В примере мы создаём класс, содержащий в качестве поля строку символов и...

Ошибка в преобразовании строки в double - C++
Почему вот тут все правильно, то есть 5.5 остается 5.5: #include &lt;iostream&gt; void main( int ArgC, char *ArgV ) { char *str = new...

Ошибка при преобразовании int в fpos_t - C++
Всем привет, ругается на строчке приравнивания int Start_Pos_UnSorted_File; fpos_t position; position = Start_Pos_UnSorted_File; ...

В функции GetRandChar ошибка в преобразовании char в wchar_t - C++
Ошибка в заставе заключается в преобразовании char в wchar_t. Вот почему он жалуется на GetRandChar, я не пойм. Как исправить? ...

Ошибка с комплексными числами при дискретном преобразовании Фурье - C++
пытаюсь реализовать дискретное преобразование фурье (не быстрое) подскажить в чем ошибка в коде ругается на...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.12.2013, 11:03     Ошибка в преобразовании типов #2
Приведение указателей - не есть преобразование типов.
Guyver
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 19
04.12.2013, 11:06  [ТС]     Ошибка в преобразовании типов #3
Возможно я не правильно выразился, мне нужно "Преобразовать указатель одного типа в указатель другого". В данном случае указатель типа int в char. )
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.12.2013, 11:16     Ошибка в преобразовании типов #4
int выводится как char:
C++
1
2
3
4
int i, *p;
cout<<"i="; cin>>i;
p=&i;
printf("%c\n", *p);
Добавлено через 9 минут
Цитата Сообщение от Guyver Посмотреть сообщение
а так быть не должно
Если char знаковый, то должно.
Guyver
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 19
04.12.2013, 11:18  [ТС]     Ошибка в преобразовании типов #5
Все равно не понимаю, задание "Преобразовать указатель одного типа в указатель другого", преподаватель зачел первый раз этот код, сказал все правильно. Потом при защите я случайно набрал значение 222, и у меня вывело отрицательное число, тогда преподаватель сказал что отрицательное число не должно получиться, значит у меня код неправильный)
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
04.12.2013, 11:22     Ошибка в преобразовании типов #6
unsigned char
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.12.2013, 11:28     Ошибка в преобразовании типов #7
Преобразовывается очень просто, просто приводится. А то что выводит отрицательрое число, при int больше 127, то зависит от реализации char (может быть знаковым, может беззнаковым). Если char знаковый, то, если введено 222 (11011110), указатель будет указывать на старший байт, старший бит - знак, поэтому выводится отрицательное число. Если хотите, чтобы выводило только положительные, то приводите к unsigned char*.
Guyver
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 19
04.12.2013, 11:29  [ТС]     Ошибка в преобразовании типов #8
Всем большое спасибо, наконец-то понял, что к чему )
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.12.2013, 11:42     Ошибка в преобразовании типов #9
Цитата Сообщение от alsav22 Посмотреть сообщение
указатель будет указывать на старший байт
На младший байт int (в памяти он будет первым, архитектура x86).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2013, 11:46     Ошибка в преобразовании типов
Еще ссылки по теме:

Ошибка этапа исполнения при преобразовании символов в верхний регистр - C++
Доброго времени суток, уважаемые пользователи CyberForum.ru! По какой то причине падает программа, прощу Вашей помощи :) void main()...

Ошибка error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден - C++
Объясните, пожалуйста, как исправить эту проблему? У меня Visual Studio 2010 Ultimate

Ошибка Error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден - C++
Вот задание. Для произвольного текста (Взятого из файла), содержащего не более 10 строк, в каждой строке не более 80 символов,...

Из-за чего появилась ошибка "сбой при преобразовании в COFF"? - C++
Ошибка 1 error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден Как исправить???

Ошибка "Сбой при преобразовании в COFF: файл недопустим или поврежден" - C++
#include &lt;iostream&gt; #include &lt;clocale&gt; int const mm = 50; int const nn = 50; float A; int basis; float Zx; float...


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

Или воспользуйтесь поиском по форуму:
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,353
04.12.2013, 11:46     Ошибка в преобразовании типов #10
Цитата Сообщение от Guyver Посмотреть сообщение
Потом при защите я случайно набрал значение 222, и у меня вывело отрицательное число, тогда преподаватель сказал что отрицательное число не должно получиться, значит у меня код неправильный
Преподаватель такой преподаватель :-) Про signed char и unsigned char никогда ничего не слышал.
Yandex
Объявления
04.12.2013, 11:46     Ошибка в преобразовании типов
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru