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

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

Восстановить пароль Регистрация
 
shymaxer
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 2
27.03.2014, 22:45     Выполнить указанные преобразования типов, и вывести полученные результаты. Найти ошибки в коде #1
Здравствуйте. Есть такое задание:

Задание
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

Вроде всё предельно просто. Но вот на деле у меня вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#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, там где их не должно быть... Прошу подсказать ошибку.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2014, 22:45     Выполнить указанные преобразования типов, и вывести полученные результаты. Найти ошибки в коде
Посмотрите здесь:

найти ошибки в коде C++
C++ Программа С++ (найти ошибки в коде)
C++ Найти ошибки в коде
C++ Вычислить значения выражений. Объяснить полученные результаты
C++ Сортировка, найти ошибки в коде
LU-разложение - найти ошибки в коде C++
Найти ошибки в коде C++
C++ Найти ошибки в коде

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 19:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru