информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Маск поддержал создателя Дилберта,... 
 Утечка сертификатов GitHub Desktop... 
 С наступающим 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Ну вот, дальше — больше. Ещё вопросы из серии тупых, но на этот раз чуточку поумнее. Pls, help... 01.02.03 23:23  Число просмотров: 1279
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Тут столкнулся с тривиальной задачей, нужно «пулять» целочисленные значения по разным ветвям обработки, тривиальный case в Паскале справился бы на-ура. А вот в сях... switch - case какой-то слабоватый. Итак, пример на Паскале ниже и вопрос в том, как это лучше всего реализовать в С:
Case MyIntegerValue of 
  0..15: DoSomthingCool(MyIntegerValue);
  16, 18, 24: DoNextCoolThing(MyIntegerValue);
  26..89, 90, 95, 101..170: VeryNiceAndCool(MyIntegerValue);
End;

---
Здесь паскальный Case во всей своей красе — выбор из диапазона, из дискретных значений (что возможно и в сяшной паре switch - case), и в последней строке выбора есть диапазоны и дискретные значения. Неужели прийдётся строить if - else?

Ну а теперь про множества. Это немного соотносится с case.
if MyChar in ['A'..'Z', 'a'..'z'] then DoSomthing — как это сделать попроще?
Я понимаю, что можно так:
if (((MyChar >= "A") && (MyChar <= "Z"))|((MyChar >= "a") && (MyChar <= "z")))
DoSomething();
но это как-то некрасиво.

Ну и потяжелее пример с типом «множество»...
Type
  TDigit = (zero, one, two, three, four, five, six, seven, eight, nine);
  TDigits = Set Of TDigit;
Var Digits: TDigits;
Begin
  Digits := [zero..two, four..six];
  Include(Digits, three);
  Digits := Digits + [seven..nine];
  // Ну и  в таком духе — операции со множествами.
End;

---
Я понимаю, для процессора это всего-навсего возня с битами в целочисленных значениях. Меня не испугает никакой язык, если в нём есть операции or, and, xor и прочяя... Но возможно, не надо изобретать колесо и есть уже что-то в самом языке?

Теперь ещё. Была у меня раньше мечта — повозится в ядре драйвером ;-) Delphi для этого не самый лучший инструмент, посколько он для этого не предназначен и включает даже в самую маленькую программу кучу инициализирующего дерьма с вызовом функций из библиотек пользовательского режима. Скажу даже, что за C я взялся, тайно движимый «ядерной» мечтою ;-) Но, наверное, взялся не за тот компилер, а именно за борландовсий С. И что я вижу — программа, которая «ничего не делает» — а именно, входит в Main и выходит из неё, без единого #include занимает 7 с лишним килобайт и выполняет кучу дерьма пользовательского режима при старте. С этим можно как-то побороться, или мне нужен другой компилятор?
Ещё в PE-заголовке драйверов выставляется флаг NATIVE subsystem, это как делается?

Заранее всем большое спасибо, надеюсь что не утомил.
<programming> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2023 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach