Ошибка преобразования char в int

400
04 февраля 2017, 09:17

Имеется следующий код:

#include <iostream>
#include "big_int.h"
using namespace std;
int main() {
    char *num = "124141414141444134";
    big_int a;
    cout << (int)num[0] << endl;
    a = num;
    cout << a;
}

Проблема в том, что выводится (первый cout) не 0-ой символ, т.е. 1, а число 49...

Answer 1

Число 49 соответствует коду символа '1' в таблице ASCII.

То есть внутренне в машине символ '1' хранится в виде данного кода, А, например, в таблице EBCDIC символу '1' соответствует код 241.

Если вы хотите вывести именно 1, то вам следует либо написать просто

cout << num[0] << endl;

либо

cout << num[0] - '0' << endl;

Имейте в виду, что строковые литералы имеют тип константных символьных массивов. Поэтому необходимо добавить квалификатор const в объявлении

const char *num = "124141414141444134";
READ ALSO
распознавание четырехугольников в OpenCV

распознавание четырехугольников в OpenCV

Работаю над распознаванием фигур в OpenCVЧтобы найти четырехугольник, смотрю на количество вершин:

542
Можно ли объединить запросы в один

Можно ли объединить запросы в один

Доброе время суток, Можно ли объединить следующие запросы в один запрос?:

425
Фрагменты или списки

Фрагменты или списки

ПриветствуюСоздаю свое первое клиент-серверное приложение, поэтому хочу проконсультироваться с более опытными разработчиками

434