Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2011, 23:49   #1
rowlin
Пользователь
 
Регистрация: 14.12.2010
Сообщений: 31
По умолчанию меньше чем int (C)

Тут обнаружил ,что на С нет типа byte (что есть в Pascal)
но есть bool _
Можно ли для заполнения таблицы решений(массив) использовать bool (как тип)?
Сам массив какой тип тогда будет иметь ??
rowlin вне форума Ответить с цитированием
Старый 15.04.2011, 23:51   #2
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

есть тип char, от -128 до 127
если нужен беззнаковый, то unsigned char от 0 до 255

еще есть short в 2 байта, от -32768 до 32677
или unsigned short от 0 до 65535

а вообще да, можно и bool
массив будет как обычно
bool array[10];
Форматируйте код, будьте людьми.

Последний раз редактировалось Granus; 15.04.2011 в 23:55.
Granus вне форума Ответить с цитированием
Старый 16.04.2011, 00:26   #3
rowlin
Пользователь
 
Регистрация: 14.12.2010
Сообщений: 31
По умолчанию

пробывал - не хочет ...
говорит - не задиклорирован bool
а вот и ответ...
_________
Типа bool в С действительно нет. Точнее, в версиях стандарта до C99 его действительно нет. В С99 он есть, но называется _Bool. Кроме того, определен заголовочный файл <stdbool.h> в котором определен `bool' как синоним для _Bool. Сделано это было, чтобы не нарушать совместимость с существующим кодом. GCC поддерживает С99 в этом отношении. Однако особого смысла в использовании _Bool/bool я не вижу, т.к. в плане проверки типов это обычный целочисленный тип (совместимый по присваиванию с int и так далее). Единственная особенность -- явное приведение к _Bool дает всегда либо 0 либо 1 (это, однако, не означает, что переменная типа _Bool будет занимать в памяти один бит) -- точно такой же эффект может быть достигнут при помощи `!!'
Испточник:
http://www.linux.org.ru/forum/development/286002
rowlin вне форума Ответить с цитированием
Старый 16.04.2011, 00:27   #4
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

bool в С++ только есть
onewho вне форума Ответить с цитированием
Старый 16.04.2011, 07:49   #5
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

аа, ну если на чистом си, то там вместо bool целочисленные типы данных и используются
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 16.04.2011, 08:01   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от rowlin Посмотреть сообщение
Тут обнаружил ,что на С нет типа byte (что есть в Pascal)
но есть bool _
Можно ли для заполнения таблицы решений(массив) использовать bool (как тип)?
Сам массив какой тип тогда будет иметь ??
Как это нет?
А битовые поля?

unsigned X : 3;
unsigned : 0;// Неименованное поле для выравнивания по границе нового элемента памяти.

Можно объявить и как булеву переменную:

boolean X : 1;
Кстати, в одном байте можно разместить 8 таких переменных. При простом объявлении, boolean занимает один байт.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 16.04.2011 в 08:03.
Smitt&Wesson вне форума Ответить с цитированием
Старый 16.04.2011, 16:01   #7
rowlin
Пользователь
 
Регистрация: 14.12.2010
Сообщений: 31
По умолчанию

Спасибо - не знал я про битовые поля

вот нацарапал .. что-то .. странно .. -второе условие он пропускает .. что тут не так ??


Код:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

void main(){
struct       //по примеру из wiki
{
  unsigned a:2;
  unsigned b:2;
  unsigned c:2;
}mas;
 bool n;
  bool o;
  n=0; o=1;  //Вот так будет задаваться TRUE/FALSE
  int sum,m;
  char otv1, otv2;
  printf("\nenter sum:");
  scanf("%d", &sum);
  if (sum <= 999 ) mas.a=n;
  else mas.a=o;
  printf("\nHe is constant client?(y/n)");
  scanf("%c",&otv1);
  if (otv1=='y') mas.b=o;
  else mas.b=n;
  printf("\nHe is debtor?(y/n)");
  scanf("%c",&otv2);
  if (otv2=='y') mas.c=o;
  else mas.c=n;
}
rowlin вне форума Ответить с цитированием
Старый 16.04.2011, 22:51   #8
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

если вы хотите bool можете сделать так
enum bool {false, true};
false==0
true==1
onewho вне форума Ответить с цитированием
Старый 17.04.2011, 17:41   #9
rowlin
Пользователь
 
Регистрация: 14.12.2010
Сообщений: 31
По умолчанию

можно но меня инресует вот этот момент
struct //по примеру из wiki
{
unsigned a:2;
unsigned b:2;
unsigned c:2;
}mas;

в структуре после : указавается размет выделяемой памяти (Т.е колличество битов)
Для записи 1 и 0 bool насколько помню требуется 1 бит , но почему тогда второе условие пропускается ?
rowlin вне форума Ответить с цитированием
Старый 17.04.2011, 17:49   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну наверно потому что его условие не выполняется.
отладчиком то пройдитесь.
Цитата:
Для записи 1 и 0 bool насколько помню требуется 1 бит
вообще то обычно его в битах не хранят, ибо производительность падает.
поэтому используется либо байт, либо два либо 4 байта(про 8 не слышал)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 17.04.2011 в 17:51.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++:invalid types 'int[int]' for array subscript greendoom Помощь студентам 0 19.03.2011 16:53
С++ Опереатор перезагрузки ()(int,int) Jane-sad Помощь студентам 1 08.10.2010 15:26
int vs unsigned int Kn793 Общие вопросы C/C++ 13 28.08.2010 22:00
Чем больше объектов - тем меньше скорость? Diego__ Microsoft Office Word 6 05.01.2010 01:39
Ячейка не меньше 1000 mirawoo Microsoft Office Excel 2 24.10.2008 11:04