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

Конвертирование char в int - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 261, средняя оценка - 4.61
ordoss
0 / 0 / 0
Регистрация: 29.05.2010
Сообщений: 17
13.06.2010, 00:21     Конвертирование char в int #1
Перевожу char в int, но на выходе неверное число, вот упрощений вариант:
C++
1
2
3
4
5
6
7
8
#include <iostream.h>
 
main()
{
    char c = '1';
    int i = static_cast<int>(c);
    cout << i;
}
где ошибка?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
13.06.2010, 00:34     Конвертирование char в int #2
А что по-вашему должно было получиться? Что значит неверное?
ordoss
0 / 0 / 0
Регистрация: 29.05.2010
Сообщений: 17
13.06.2010, 00:39  [ТС]     Конвертирование char в int #3
rangerx, "по-моему" должно было получиться 1, так как использован static_cast, но на выходе 49
А "по-вашему"?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
13.06.2010, 00:47     Конвертирование char в int #4
Цитата Сообщение от ordoss Посмотреть сообщение
"по-моему" должно было получиться 1, так как использован static_cast
Это с какого перепуга? static_cast в Вашем случае просто приводит переменную типа char к типу int. Значением переменной как был код символа '1', так и остался...
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
13.06.2010, 00:47     Конвертирование char в int #5
ordoss, а по нашему
C++
1
int i = static_cast<int>(c) - 48;
Запомните навсегда - во всех языках программирования(по крайней мере тех, с которыми я знаком) C/C++/C#/Java/J# приведение char к int дает вам ASCII код символа, а не переводит '1' в 1
Market
21 / 21 / 1
Регистрация: 18.03.2010
Сообщений: 19
13.06.2010, 11:41     Конвертирование char в int #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Все напали на вас и не кто толком не объяснил.

char c = '1';

когда вы сделали присваивание в переменную 'c' записался только номер символа "1", то есть предположим так: Вы сохранили номер символа по которому windows хранит номер изображения с симвоолом "1", вы же не можете сохранить изображение в переменную char, по этому при выводе например на консоле вместо номера символа вы увидите сам символ. Надеюсь понятно.

Для перевода символа из номера кода символа есть множество функций вот например
int atoi(const char *str)

можно было написать так:
C++
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
 
main()
{
    char c = '1';
    int i = atoi(c);
    cout << i;
}
Yandex
Объявления
13.06.2010, 11:41     Конвертирование char в int
Ответ Создать тему
Опции темы

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