Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Встроенные библиотеки в Visual studio https://www.cyberforum.ru/ cpp-beginners/ thread2170469.html
В visual studio мы пользуемся небольшим набором библиотек типо iostream,ios,cstdlib,cmath и т.д. А что на счет таких библиотек как например memcpy,limits map. Интересует информация на русском по этим...
Работа с ячейками памяти C++
Есть идея написать простую консольную программу для вывода значений которые лежат в ячейке памяти и сканирования этих самых ячеек(типо artmoney). Я не могу понять как в некоторых программах люди...
C++ Знаковые массивы в C++ Изучая C++ столкнулся с проблемой ввода значений одного массива в ячейки другого массива. Пытался таким образом, но заполнение массива не происходит. Каким образом делать это правильно? str1 = str; https://www.cyberforum.ru/ cpp-beginners/ thread2170462.html C++ Найти ошибку | Разбор строк Для кодирования сообщения используют следующие действия: сообщение записывают, опуская пробелы, в прямоугольник заданной высоты по столбцам, а затем прочитывают строки в заданном порядке. 1 П Р И... https://www.cyberforum.ru/ cpp-beginners/ thread2170444.html
Синхронизация процессов и потоков C++
Помогите с заданием, пожалуйста.
C++ Программа моделирования обрабатывающего устройства и очереди к нему Честно сказать не очень понимаю о чем тут речь, если можно объясните пожалуйста. https://www.cyberforum.ru/ cpp-beginners/ thread2170432.html
C++ Вычисление с применением вектора Написал класс, но что-то не считает, в чём ошибся? Помогите пожалуйста. Добавлено через 55 минут #include <iostream> https://www.cyberforum.ru/ cpp-beginners/ thread2170418.html Class Train c++ C++
Описать класс с именем TRAIN, содержащий элементы: Скрытые поля: название пункта (*char), номер поезда (int), время отправления (double в формате <чч.мм>). Открытые методы: конструктор по...
C++ Быстрый поиск минимума в отличающихся одним элементом векторах Всем привет Есть вектор, состоящий, допустим, из строк (std::string). В нем ищется минимальный элемент. Этот минимальный элемент выводится на экран, и "ячейка" вектора, в котором хранился этот... https://www.cyberforum.ru/ cpp-beginners/ thread2170390.html C++ Крестики-нолики, графика, ООП Здравствуйте, нужно несколько советов, просто не знаю с чего начать. Мне нужно написать курсовую работу по Объектно-ориентированному программированию на C++, работаю в Visual Studio. Какую графику... https://www.cyberforum.ru/ cpp-beginners/ thread2170388.html
C++ Виртуальные функции
Создать базовый класс «молодой человек» и производные классы «студент», «военнослужащий», «военный курсант». Выведите на экран сведения о военнообязанности. #include <iostream> #include...
C++ Написать программу, использующую этот класс для представления англо-русского словаря https://www.cyberforum.ru/ cpp-beginners/ thread2170379.html
Имеется код на задание: описание класса, реализующий бинарное дерево обладающее возможностью добавления новых элементов, удаления существующих, поиска элемента по ключу, а также последовательного...
16 / 16 / 11
Регистрация: 28.10.2016
Сообщений: 75
07.01.2018, 22:37 0

Как работают явные преобразования из char[] в int? - C++ - Ответ 12010426

07.01.2018, 22:37. Показов 985. Ответов 7
Метки (Все метки)

Лучший ответ Сообщение было отмечено IlyaKr как решение

Решение

Строка 66:
C++
1
if (x = NULL) //???
x = NULL всегда возвращает NULL, следовательно,
C++
1
2
3
4
5
6
7
int Ibuf;
if (x = NULL)
{
    file.getline(buf, 256, ' ');
    Ibuf = (int)buf;
}
else Ibuf = x;
Ibuf всегда будет равен 0

Добавлено через 13 минут
P.s. а само преобразование
C++
1
2
char *s = ...;
(int)s;
работает так же, как и
C++
1
reinterpret_cast<int>(s);
, т.е. берётся адрес, на который указывает s (допустим, наш адрес - это 0x00BB7E50) воспринимается как число, и переводится в десятичную систему счисления. (например, наш адрес в 10-ной системе будет числом 12287568).
Например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
 
    void* p = reinterpret_cast<void*>(0x0F1337F0);
    
    cout << p << endl;
    cout << (int)p << endl;
 
    _getch();
    return 0;
}
Выполни эту программу и сравни числа на калькуляторе Windows, или любом онлайн-конвертере.

Добавлено через 4 минуты
И ещё:
C++
1
2
3
if (x != NULL) tree->x = x;
else file.getline(buf, 256, ' ');
tree->x = atoi(buf);
Ничего странного не замечаешь?
(Что будет, если x таки != NULL)?

Добавлено через 1 минуту
Тогда уже так:
C++
1
2
3
4
5
6
7
if (x != NULL) 
        tree->x = x;
    else
    {
        file.getline(buf, 256, ' ');
        tree->x = atoi(buf);
    }
Добавлено через 2 минуты
P.s.s. Я не моралфаг, но всё же советовал бы передавать в функции
C++
1
2
void SearchByName(string name, Node *tree);
void SearchByAuthor(string author, Node *tree);
значения по lvalue-ссылкам, т.е.
C++
1
2
void SearchByName(const string& name, Node *tree);
void SearchByAuthor(const string& author, Node *tree);
а так же
C++
1
2
3
tree->name = "";
tree->author = "";//Автор
tree->pub = "";//Издательство
посоветую заменить на
C++
1
2
3
tree->name.clear();
tree->author.clear();//Автор
tree->pub.clear();//Издательство
Добавлено через 6 минут

Не по теме:


К мелочам типа неконстантных указателей в аргументах и прочего решил не придираться, за моралфага примут. :D



Вернуться к обсуждению:
Как работают явные преобразования из char[] в int? C++
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2018, 22:37
Готовые ответы и решения:

Нет преобразования int в char*
int main() { char s; char* kz = 0; cout &lt;&lt; &quot;Vvedite stroku: &quot;; cin &gt;&gt; s; // строку...

Преобразования массива с типа int к типу char
Помогите решить задачу. Требуется создать шаблон класса для преобразования массива с типа int к...

явные преобразования
откоректируйте синтаксис Any a; f(&quot;&quot;,ios::binary); /* * */ f.write((char*) a,sizeof(a));

Как превести из char* в int и наоборот из int в char*?
Как превести из char* aa='123' в int aa=123 и наоборот из int в char* . Понимаю что самому...

7
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.01.2018, 22:37

Реализация функции char *padl(const char *string, int len, int c=' ')
Реализовать функцию возвращающую указатель на новую строку длины len, полученную из string либо...

Форматирование строк, char to int & int to char
Покажите как запихнуть число в строку и вытащить его обратно из строки. Вот всё просто в pawn ...

Как в выделенную память записать поочередно число int, массив char[n], и еще число int
Выделяю память void* Start=malloc(Size); Как туда записать поочередно число int, массив char,...

Ошибка "error C2446: :: нет преобразования "int" в "char *"
Ошибка: &quot;error C2446: :: нет преобразования &quot;int&quot; в &quot;char *&quot; Когда нажимаю двойным кликом на...

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