Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 27.03.2014, 23:19   #1
shymaxer1
Новичок
 
Регистрация: 27.03.2014
Сообщений: 1
Репутация: 10
По умолчанию Прошу помочь найти ошибку в программе

Здравствуйте. Уже всё облазил, не могу понять в чём беда. Есть такое задание:

Задание
1. Для типов данных char, short, int, long с квалификаторами signed, unsigned составить
программу, которая, используя операцию присваивания, выполняет указанные преобразования
типов, и вывести полученные результаты.
signed char -> signed short int -> signed int -> signed long
unsigned char -> unsigned short int -> unsigned int -> unsigned long
unsigned long -> unsigned int -> unsigned short int -> unsigned char
signed long -> signed int -> signed short int -> signed char
Преобразования должны быть выполнены для произвольного, максимального (CHAR_MAX,
UCHAR_MAX, ULONG_MAX, LONG_MAX) и минимального (CHAR_MIN, LONG_MIN) значений
переменной.

2. Выполнить указанные вычисления и распечатать полученные результаты.
signed int MAX -> signed int MAX+1
unsigned int MAX -> unsigned int MAX+1
signed int MIN -> signed int MIN-1
unsigned int MIN -> unsigned int MIN-1

Вроде всё предельно просто. Но вот на деле у меня вот так
Код:
#include <iostream>
#include "stdio.h"
#include "limits.h"

int main () {
unsigned char a;
signed char b;
unsigned short int c;
signed short int d;
unsigned int e,um,um1;
signed int f,m,m1;
unsigned long g;
signed long h;

b=CHAR_MAX;
d=b; //signed char - signed short int
printf("signed char= %d \n signed short int= %d \n ",b,d);
f=d; //signed short int - signed int
printf("signed int= %d \n ",f);
h=f; //signed int - signed long
printf("signed long= %ld \n",h);
printf ("\n");

a=UCHAR_MAX;
c=a; //unsigned char - unsigned short int
printf("unsig char= %u \n unsig short int= %u \n ",a,c);
e=c; //signed short int - unsigned int
printf("unsig int= %u \n ",e);
g=e; //unsigned int - unsigned long
printf("unsig long= %lu \n",g);
printf ("\n");

g=ULONG_MAX;
e=g; //unsigned long - unsigned int
printf("unsig long= %lu \n unsig int= %u \n ",g,e);
c=e; //unsigned int - unsigned short int
printf("unsig short int= %hu \n ",c);
a=c; //unsigned short int - unsigned char
printf("unsig char= %u \n",a);
printf ("\n");

h=LONG_MAX;
f=h; //signed long - signed int
printf("signed long= %ld \n signed int= %d \n ",h,f);
d=f; //signed int - signed short int
printf("signed short int= %hd \n ",d);
b=d; //signed short int - signed char
printf("signed char=%d",b);
printf ("\n\n\n");

b=CHAR_MIN;
d=b; //signed char - signed short int
printf("signed char= %d, \n signed short int= %d \n ",b,d);
f=d; //signed short int - signed int
printf("signed int= %d \n ",f);
h=f; //signed int - signed long
printf("signed long= %ld \n",h);
printf ("\n");


a=CHAR_MIN;
c=a; //unsigned char - unsigned short int
printf("unsig char= %u \n unsig short int= %u \n ",a,c);
e=c; //unsigned short int - unsigned int
printf("unsig int= %u \n ",e);
g=e; //unsigned int - unsigned long
printf("unsig long= %lu \n",g);
printf ("\n");

g=LONG_MIN;
e=g; //unsigned long - unsigned int
printf("unsig long= %lu \n unsig int= %u \n ",g,e);
c=e; //unsigned int - unsigned short int
printf("unsig short int= %u \n ",c);
a=c; //unsigned short int - unsigned char
printf("unsig char= %u \n",a);
printf ("\n");

h=LONG_MIN;
f=h; //signed long - signed int
printf("signed long= %ld \n signed int= %d \n ",h,f);
d=f; //signed int - signed short int
printf("signed short int= %d \n ",d);
b=d; //signed short int - signed char
printf("signed char= %d \n",b);
printf("-------------------------------------"); //Конец первой части задания
m=INT_MAX;
m1=m+1;
printf("\n signed int MAX (%d) -> signed int MAX+1: %d ",m,m1);

um=UINT_MAX;
um1=um+1;
printf("\n unsigned int MAX (%u) -> unsigned int MAX+1: %u ",um,um1);

m=INT_MIN;
m1=m-1;
printf("\n signed int MIN (%d) -> signed int MIN-1: %d ",m,m1);

um=INT_MIN;
um1=um-1;
printf("\n unsigned int MIN (%u) -> unsigned int MIN-1: %u ",um,um1);
return 0;
}
Результат: http://codepad.org/ZSYKSAvs
Собственно проблема в 0 и -1, там где их не должно быть... Прошу подсказать ошибку.

Последний раз редактировалось shymaxer1; 27.03.2014 в 23:39.
shymaxer1 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу помочь исправить ошибку. bhopperz Паскаль 4 26.11.2012 22:46
не могу найти ошибку! прошу помочь!:) Snake_k6 Общие вопросы C/C++ 2 02.11.2012 12:03
Прошу помочь найти ошибку.Текст внутри BackSlash Помощь студентам 3 21.12.2009 13:13
Прошу найти ошибку в программе Ант@н Помощь студентам 0 22.11.2009 11:11
Не могу найти ошибку в программе. Прошу помощи Chaplen89 Общие вопросы Delphi 0 27.10.2009 18:31


07:04.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.