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

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

Войти
Регистрация
Восстановить пароль
 
diagon
Higher
1927 / 1193 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
#1

Чем сумма char'ов отличается от их разности? - C++

09.04.2011, 19:14. Просмотров 898. Ответов 3
Метки нет (Все метки)

Задание было написать программу, решающую линейное уравнение в духе 1+x=3.(условие)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <fstream>
using namespace std;
main(){
    ifstream infile("input.txt");
    ofstream outfile("output.txt");
    char a,b,c,d;
    infile.get(a);
    infile.get(d);
    infile.get(b);
    infile.get();
    infile.get(c);
    if (a=='x')
        if (d=='+') outfile << c-b; else outfile << b+c-96;
    if (b=='x')
        if (d=='+') outfile << c-a; else outfile << a-c;
    if (c=='x')
        if (d=='+') outfile << a+b-96; else outfile << a-b;
    infile.close();
    outfile.close();
    return 0;
    }
Программа работает... Но, как видно из кода, при сумме к числам прибавляется 96, при разности этого не происходит. Собственно, заинтересовался, почему так происходит.
Мои догадки-"+"и"-" это, насколько я понимаю, перегруженные функции... Видимо, перегружены они по разному?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2011, 19:14     Чем сумма char'ов отличается от их разности?
Посмотрите здесь:
C++ В чем разница между char* и char[]?
В чем разница между char* и char ** C++
C++ Чем отличается if от (?:)
C++ Чем отличается this от *this?
Чем C++ отличается от C++ Builder? C++
Чем отличается ln , lg, и log ? C++
C++ Чем new отличается от malloc?
C++ Чем отличается С++ от Visual С++?
В чем отличие char* s от char *s C++
C++ Чем отличается Абстрагирование от Наследования?
Чем отличается оператор цикла C++
C++ Чем отличается компилятор от интерпретатора?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vandris
63 / 63 / 13
Регистрация: 19.01.2011
Сообщений: 92
09.04.2011, 19:14     Чем сумма char'ов отличается от их разности? #2
не поверите, но char это int, просто от -127 до 128(если char типа signed, unsigned char будет от 0 до 255)...
Узнать, какой int соответствует символу можно например так:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
int main()
{
    char a = '0', b = '9';
    std::cout << (int)a << " " << (int)b; //48 57
    std::cout << std::endl << a-b; //-9 = 0 - 9 = 48 - 57
    std::cout << std::endl << a+b; //105 = 9 + 96
    return 0;
}
как видно, с разностью чисел проблем нет, но с суммой будут, поэтому вы и вычитаете 96
diagon
Higher
1927 / 1193 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
09.04.2011, 20:08  [ТС]     Чем сумма char'ов отличается от их разности? #3

Не по теме:

Забавная штука...

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
ostream& tab(ostream& output){
    return output << "\t";
}
main(){
int i;
for (i = 0; i <=255; i++)
    cout << i << tab << (unsigned char)i << endl;
    cin.get();
    return 0;
}
О существовании некоторых символов я даже и не подозревал...
♫ ☺☻ ♀ ♂ ♥ ♦ ♣ ♠
Сравнил результат с табличкой ASCII... Забавно=)


Получается, чтобы перевести char в int, нужно еще и вычесть из него 48...
Но это как-то некрасиво выглядит, наверняка в столь великом и могучем языке есть другие способы перевода цифры char'овской в цифру int'овскую. Хотелось бы узнать, какие?
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.04.2011, 20:14     Чем сумма char'ов отличается от их разности? #4
http://msdn.microsoft.com/en-us/libr...(v=vs.71).aspx
Yandex
Объявления
09.04.2011, 20:14     Чем сумма char'ов отличается от их разности?
Ответ Создать тему
Опции темы

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