Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразование указателей 
V
    Опции темы
newgigabyte
  Дата 29.6.2009, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 10.1.2008

Репутация: нет
Всего: 2



почему этот код 

Код

  int* t=new int();
  cin>>*t;
  bool* tt=new bool[16];
  tt[0]=false;
  tt=(bool*)t;
  cout<<tt[0]<<endl;


выдает тоже самое число что и получает, а не первый бит.
--------------------
PM MAIL   Вверх
azesmcar
Дата 29.6.2009, 15:38 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



newgigabyte

а зачем он должен возвращать первый бит?
bool это не бит, его размер зависит от реализации, но это никак не бит. Если нужно получить первый бит - используй битовые операции.

Это сообщение отредактировал(а) azesmcar - 29.6.2009, 15:41
PM   Вверх
StLynx
Дата 29.6.2009, 15:47 (ссылка)    | (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 4.8.2007
Где: Владимир

Репутация: нет
Всего: нет



дада, бул это байт
PM MAIL   Вверх
GoldFinch
Дата 29.6.2009, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



newgigabyte, у тя в 5-й строчке утечка памяти smile
bool это синоним char
чтобы получить 1-й (0й) бит x нада писать x&1
PM MAIL ICQ   Вверх
Gordon
Дата 29.6.2009, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 9.7.2006

Репутация: 1
Всего: 6



Цитата(GoldFinch @  29.6.2009,  15:47 Найти цитируемый пост)
newgigabyte, у тя в 5-й строчке утечка памяти


Да, это точно. И выводится то, что и должно выводиться... И автор, кажется, не совсем понял что хочет получить.



--------------------

  
     
PM MAIL WWW   Вверх
andrew_121
Дата 29.6.2009, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Цитата(StLynx @  29.6.2009,  15:47 Найти цитируемый пост)
дада, бул это байт 

С какой это балды ему быть байтом?! smile 
То что на некоторых компиляторах/платформах sizeof(bool) == 1 это не значит что это байт!

Это сообщение отредактировал(а) andrew_121 - 29.6.2009, 17:58


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
and277
Дата 29.6.2009, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 9.4.2009

Репутация: нет
Всего: нет



Могу ошибаться, но как уже и сказали в большинстве компиляторов  тип bool  имеет размер 1 байт. А вообще этот размер может  быть разным в зависимости от конкретной реализации компилятора. 
Чисто теоретически bool можно представить в виде одного лишь бита. Более и не надо. Но!  Использование отдельных бит в программе нецелесообразно ввиду того что битовые операции выполняются медленнее байтовых.

Если что подправьте меня плиз. 
PM MAIL   Вверх
Gordon
Дата 29.6.2009, 20:01 (ссылка)   | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 9.7.2006

Репутация: 1
Всего: 6



Цитата(and277 @  29.6.2009,  19:10 Найти цитируемый пост)
Могу ошибаться, но как уже и сказали в большинстве компиляторов  тип bool  имеет размер 1 байт. А вообще этот размер может  быть разным в зависимости от конкретной реализации компилятора. Чисто теоретически bool можно представить в виде одного лишь бита. Более и не надо.


Теоретически - да! Должно хватить, но, на сколько я знаю, единица памяти в С++ - байт...


--------------------

  
     
PM MAIL WWW   Вверх
and277
Дата 30.6.2009, 12:55 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 9.4.2009

Репутация: нет
Всего: нет



Цитата(Gordon @ 29.6.2009,  20:01)

Теоретически - да! Должно хватить, но, на сколько я знаю, единица памяти в С++ - байт...

Согласен... Размер типа и битовые операции разные вещи.

Это сообщение отредактировал(а) and277 - 30.6.2009, 12:56
PM MAIL   Вверх
Alexeis
Дата 30.6.2009, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 4
Всего: 459



newgigabyte, может вам vector<bool> нужен вместо bool* tt=new bool[16]; , так вроде битами и хранятся true и false.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
586
Дата 2.7.2009, 05:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 8
Всего: 146



bool - это логический тип - может принимать значения либо false либо true, и никакое другое.
Код
#include <iostream>

void print(int i)
{
    std::cout << i << "\t" << (int)(bool)i << std::endl;
}

int main(int argc, char* argv[])
{
    std::cout << "int\tbool" << std::endl;
    std::cout << "----------------" << std::endl;
    print(0);
    print(1);
    print(2);
    print(10);
    std::cin.get();
    return 0;
}

Код
int     bool
----------------
0       0
1       1
2       1
10      1

PM   Вверх
zim22
Дата 2.7.2009, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(586 @  2.7.2009,  05:01 Найти цитируемый пост)
bool - это логический тип - может принимать значения либо false либо true, и никакое другое.

bool "никакое другое" тоже может принимать
http://forum.vingrad.ru/index.php?showtopi...t&p=1900696


--------------------
PM MAIL   Вверх
azesmcar
Дата 2.7.2009, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(zim22 @  2.7.2009,  07:44 Найти цитируемый пост)
bool "никакое другое" тоже может принимать

Это нечестно smile это уже не bool принимает.
Цитата

Values of type bool are either true or false.42)

Другое дело что bool - некоторая область памяти, а в этой памяти можно записать все что угодно (да хоть через memcpy). А вот сам bool ничего другого не примет.
Цитата

4.12 Boolean conversions [conv.bool]
1 An rvalue of arithmetic, enumeration, pointer, or pointer to member type can be converted to an rvalue of
type bool. A zero value, null pointer value, or null member pointer value is converted to false; any
other value is converted to true.


PM   Вверх
GoldFinch
Дата 2.7.2009, 08:47 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



Цитата(zim22 @  2.7.2009,  08:44 Найти цитируемый пост)
bool "никакое другое" тоже может принимать
http://forum.vingrad.ru/index.php?showtopi...t&p=1900696

это незнание особенностей реализации

if (b != false)
if (b != true)
- быдлокод, ты бы еще число символов считал
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0927 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.