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

Reinterpret_cast - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подправьте пожалуйста код. http://www.cyberforum.ru/cpp-beginners/thread555154.html
#include "stdafx.h" #include "iostream" using namespace std; int main(){ int map; int grass = {1,"grass.jpg"}; // grass = проходимость , grass = путь до картинки for(int x = 0;x<10;x++){ for(int y = 0;y<10;y++){
C++ Как взять разность по модулю между двумя числами int? Суть в теме: "Как взять разность по модулю между двумя числами int?". Заранее спасибо :) http://www.cyberforum.ru/cpp-beginners/thread555137.html
Составить программу для подсчёта произведения элементов целочисленной прямоугольной таблицы C++
Составить программу для подсчёта произведения элементов целочисленной прямоугольной таблицы Y, состоящей из p строк и k столбцов, сумма двух индексов которых есть число чётное. Использовать динамический массив. Помогите пожалуйста
C++ Вывести на экран все символы которые находятся во второй половине текста
помогите с этим заданием пожалуйста...... я знаю что там нужно все количество символов разделить на два присвоить каждому значению свое зн-е но как записать эту прогу....???
C++ Использование vcl.h http://www.cyberforum.ru/cpp-beginners/thread555122.html
Здравствуйте. Есть такая программа: #include <vcl.h> #include <iostream.h> #include <conio.h> #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused
C++ ошибка: отсутствует обязательный файл "" программа должна выполнять циклический сдвиг цисла #include <stdio.h> #include <conio.h> #include <locale.h> #include <cstdlib> #include "func.h" подробнее

Показать сообщение отдельно
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
22.04.2012, 16:24     Reinterpret_cast
мда. писать все в одной строке - то еще зло. понять друго что происходит.
по вашей проблеме:
после выкидывания невлияющего на результат кода и принимая во внимание что length == 0
все это дело можно упростить до:
C++
1
2
3
4
5
6
7
8
const char res1 = *(reinterpret_cast<const char*>(&length) + cur_length_byte);
const char res2 = length + cur_length_byte;
 
В перовой строчке берется адрес переменной length, к этому адресу прибавляется
cur_length_byte байт (ну т.е. один байт т.к. cur_length_byte==1 ). после вот такого
складывания получается укзатель, который указывает за переменную length. потом
этот указатель разыменовывается. это конечно же не то же самое, что складывание
двух переменных. Вот поэтому результаты отличаются.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru