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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перевод числа в строку, Аптимизация кода 
:(
    Опции темы
GIK
Дата 27.12.2007, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


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

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



Всем доброго времени суток.
Народ у кого есть идеи или алгоритмы перевода из инта в чары, только чтобы оптимальные и компактные. Где-то видел в одну строку почти, супер smile 
Как не понадобиться такая фигна, типа перевод из инта в чар или "обрезка" числа вечно приходится придумывать заново smile Охото уже раз и навсегда уловить смысл, чтобы это сделать надо видеть короткий код.

Вот писал перевод, причем писал относительно долго...

Код

   //перевод числа в строку
 int ITOG; char charrr[10]={0}; int result = 1;
    int ITOG=12367;
    while (value > 1)
    {value /= 10; ++result;} 


   int len=result; 
  
 for(int j=0; j<len; j++)
 { int b_ran=ITOG;
   int ran=0; 
  if(result!=1)
 {  
   for(int i=result-1; i!=0; i--)  //Возведение от начала в степень n-1 и до конца (предпоследнее число)  
   {
     ran+ = b_ran / pow (10, i); //собираем число
     };
   b_ran=0;
   b_ran = ITOG - ran;
   charrr[j]=(b_ran+48);
   result--;             //Уменьшается длина
   ITOG= ITOG - b_ran;   //Уменьшается число      
   ITOG= ITOG / pow(10, 1); //убираем ноль с конца числа
        /// последний будет при result=1, когда обработается два числа например 12, т.е. после ITOG= ITOG - b_ran; 
        //// ITOG будет = 10, и 10/10 даст 1 
   if(result==1)
     charrr[j]=(ITOG+48);
  }
}
Жду ваших вариантов в уменьшенном виде smile

Это сообщение отредактировал(а) GIK - 27.12.2007, 17:53


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
bsa
Дата 27.12.2007, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



snprintf()
PM   Вверх
baldina
Дата 27.12.2007, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Зачем писал? itoa/ltoa не подходят? А в них, между прочим, pow не используется,  для отрицательных чисел минус выводится и поддерживаются разные системы счисления. Исходник CRT тоже не проблема посмотреть.

Добавлено через 1 минуту и 11 секунд
bsa, snprintf() штука удобная, но время на разбор формата тратится, а товарищу аптимально надо.
PM MAIL   Вверх
Fazil6
Дата 27.12.2007, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(GIK @  27.12.2007,  17:50 Найти цитируемый пост)
Жду ваших вариантов в уменьшенном виде


Код

#include <string>
#include <boost/lexical_cast.hpp>


template <class T> std::string ToString(const T &arg)
    {
        return boost::lexical_cast<std::string>(arg);
    }



PM MAIL   Вверх
bsa
Дата 27.12.2007, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Цитата(baldina @ 27.12.2007,  18:11)
Зачем писал? itoa/ltoa не подходят? А в них, между прочим, pow не используется,  для отрицательных чисел минус выводится и поддерживаются разные системы счисления. Исходник CRT тоже не проблема посмотреть.

Добавлено @ 18:12
bsa, snprintf() штука удобная, но время на разбор формата тратится, а товарищу аптимально надо.

itoa/ltoa - нестандартные. Т.е. нет никаких гарантий, что есть в выбранной версии libc
уверен, что snprintf работает быстрей, чем указанный алгоритм, и, в отличие от itoa, эта функция входит в стандартную библиотеку.
PM   Вверх
Earnest
Дата 27.12.2007, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Цитата(GIK @  27.12.2007,  18:50 Найти цитируемый пост)
только чтобы оптимальные и компактные

не всегда, но часто противоречит друг другу.
А чем тебя itoa не устаривает? Оптимальный, но не компактный.
Впрочем, если использовать готовую функцию, одна строка и будет.



--------------------
...
PM   Вверх
bsa
Дата 27.12.2007, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Fazil6, тогда уж можно так: 
Код
std::string numString = (std::stringstream() << 12345).c_str();

PM   Вверх
Earnest
Дата 27.12.2007, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Цитата(bsa @  27.12.2007,  19:15 Найти цитируемый пост)
itoa/ltoa - нестандартные. 

Разве? Это же стандартая функция C-библиотеки. А вот snprintf недавно появилась, где-то может и не быть... впрочем есть sprintf...



--------------------
...
PM   Вверх
baldina
Дата 27.12.2007, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



так не проще?
Код

char *p = charrr;
do {
    int digit = (unsigned)ITOG % 10;
    ITOG /= 10; 
    *p++ =  (char)(digit + '0');
} while (ITOG > 0);
// получили строку в обратном порядке. теперь надо перевернуть
// можно strrev, можно и врукопашную ;-)


Добавлено через 5 минут и 44 секунды
они действительно нестандартные, но стандартны де-факто, мне еще не приходилось видеть стандартную библиотеку без них (все когда-то происходит впервые?  smile). 
PM MAIL   Вверх
bsa
Дата 27.12.2007, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Цитата(Earnest @ 27.12.2007,  18:20)
Цитата(bsa @  27.12.2007,  19:15 Найти цитируемый пост)
itoa/ltoa - нестандартные. 

Разве? Это же стандартая функция C-библиотеки. А вот snprintf недавно появилась, где-то может и не быть... впрочем есть sprintf...

Стандартная библиотека - это:
Код
       #include <stdlib.h>

       int atoi(const char *nptr);
       long atol(const char *nptr);
       long long atoll(const char *nptr);
       long long atoq(const char *nptr);
А itoa - это расширение: http://ru.wikipedia.org/wiki/Itoa

PM   Вверх
MAKCim
Дата 28.12.2007, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



Код

static int __convert(unsigned int number, char ** array) {
    int division = number / 10;
    int error = 0;
    if (division > 0) 
        error = __convert(division, array);
    **array = number % 10 + '0';
    ++*array;
    return error;
}

static int convert(int number, char * array) {
    if (number < 0) {
        number = -number;
        *array++ = '-';
    }
    return __convert((unsigned int)number, &array);
}


Это сообщение отредактировал(а) MAKCim - 28.12.2007, 20:40


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Ln78
Дата 28.12.2007, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(MAKCim @  28.12.2007,  10:28 Найти цитируемый пост)
if (division < 30 || division > 39) 

Имелось в виду
Код

if (division < 0x30 || division > 0x39)

?
PM MAIL   Вверх
MAKCim
Дата 28.12.2007, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



Ln78, 
угу
исправлено


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
maxim1000
Дата 28.12.2007, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(MAKCim @  28.12.2007,  10:28 Найти цитируемый пост)
if (division < 0x30 || division > 0x39)

а зачем она тут вообще?


--------------------
qqq
PM WWW   Вверх
Lazin
Дата 28.12.2007, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(bsa @  27.12.2007,  18:17 Найти цитируемый пост)
Fazil6, тогда уж можно так: 

Код

std::string numString = (std::stringstream() << 12345).c_str();


это не будет работать
оператор << возвращает указатель на поток, у которого нет метода с_str()

Добавлено через 5 минут и 59 секунд
уж лучше так:
Код

std::string numString = dynamic_cast<strstream&>(std::strstream() << 12345).str();


Добавлено через 8 минут и 18 секунд
правда в моем варианте может исключение возникать, в случае если оператор << для класса определен не верно (не возвращает ссылку на ostream)

Это сообщение отредактировал(а) Lazin - 28.12.2007, 14:46
PM MAIL Skype GTalk   Вверх
bsa
Дата 28.12.2007, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Lazin, точно. Поторопился и накосячил:
Код
std::string numString = static_cast<std::stringstream&>(std::stringstream() << 12345).str();
Но, имхо, так лучше не делать.
PM   Вверх
baldina
Дата 28.12.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



GIK молчит чего-то. Он тут еще?
Во думаю такой вариант будет довольно шустр:
Код

char* int2str (long value, char *str)
{
  char *p = str;
  if (value < 0) 
  {
    *p++ = '-';
    value = -value;
  }

  for (long v = value; v > 0; ++p)
    v /= 10;
  *p-- = '\0';

  do {
    unsigned digit = value % 10;
    value /= 10;       
    *p-- = digit + '0';
  } while (value > 0);

  return str;
}


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


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



В реальном проекте я бы эту ф-ю не использовал, хотя-бы потому-что она не безопасна.
PM MAIL Skype GTalk   Вверх
bsa
Дата 28.12.2007, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Вот мой вариант:
Код
char* intToStr(int value, char *buffer)
{
    char *bb = buffer;
    char *p = buffer;
    if (value < 0) {
        *buffer = '-';
        ++p;
        ++bb;
        value = -value;
    }
    do {
        *bb = (value % 10) + '0';
        value /= 10;
        ++bb;
    }while(value);
    *bb = '\0';
    for(--bb; bb > p; ++p, --bb) {
        const char a = *p;
        *p = *bb;
        *bb = a;
    }
    return buffer;
}
На мой вгляд, работает быстрее раза в 2, чем предыдущий вариант.

Это сообщение отредактировал(а) bsa - 28.12.2007, 22:41
PM   Вверх
W4FhLF
Дата 28.12.2007, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



Цитата(bsa @  28.12.2007,  18:09 Найти цитируемый пост)
На мой вгляд, работает быстрее раза в 2, чем предыдущий вариант.


Какой предыдущий? Твой вариант работает в 3 раза медленнее, чем вариант baldina.

Но тут вне конкуренции оказывается функция из дока "Software Optimization Guide for AMDAthlon™ 64 and AMDOpteron™ Processors", на моём процессоре Athlon 64 3500+ она работает в 3 раза быстрее, чема вариант baldina(он в теме самый быстрый). Код немного дописан, чтобы функция понимала так же знаковые числа. 

Код

__declspec(naked) void __stdcall uint_to_ascii_nlz(char *sptr, int x)
{
   __asm {
      push edi                ; Save as per calling conventions.
      push ebx                ; Save as per calling conventions.
      mov  edi, [esp+12]      ; sptr
      mov  eax, [esp+16]      ; x

      cdq             ;if eax >= 0 then edx=0 else edx=-1
      xor eax,edx
      sub eax,edx
      mov byte ptr[edi],'-'
      sub edi,edx   ;if eax < 0 then {inc edi} else {затрем '-' первой цифрой}

      mov  ecx, eax           ; Save original argument.
      mov  edx, 89705F41h     ; 1e-9 * 2^61 rounded
      mul  edx                ; Divide by 1e9 by multiplying with reciprocal.
      add  eax, eax           ; Round division result.
      adc  edx, 0             ; EDX[31-29] = argument / 1e9
      shr  edx, 29            ; Leading decimal digit, 0...4
      mov  eax, edx           ; Leading digit
      mov  ebx, edx           ; Initialize digit accumulator with
                              ;  leading digit.
      imul eax, 1000000000    ; Leading digit * 1e9
      sub  ecx, eax           ; Subtract (leading digit * 1e9) from argument.
      or   dl, '0'            ; Convert leading digit to ASCII.
      mov  [edi], dl          ; Store leading digit.
      cmp  ebx, 1             ; Any nonzero digit yet?
      sbb  edi, -1            ; Yes, increment ptr. No, keep old ptr.
      mov  eax, ecx           ; Get reduced argument < 1e9.
      mov  edx, 0abcc7712h    ; 2^28 / 1e8 * 2^30 rounded up
      mul  edx                ; Divide reduced
      shr  eax, 30            ;  argument < 1e9 by 1e8,
      lea  edx, [eax+4*edx+1] ;  converting it into 4.28 fixed-point
      mov  eax, edx           ;  format such that 1.0 = 2^28.
      shr  eax, 28            ; Next digit
      and  edx, 0fffffffh     ; Fraction part
      or   ebx, eax           ; Accumulate next digit.
      or   eax, '0'           ; Convert digit to ASCII.
      mov  [edi], al          ; Store digit in memory.
      lea  eax, [edx*4+edx]   ; 5 * fraction, new digit EAX[31-27]
      lea  edx, [edx*4+edx]   ; 5 * fraction, new fraction EDX[26-0]
      cmp  ebx, 1             ; Any nonzero digit yet?
      sbb  edi, -1            ; Yes, increment ptr. No, keep old ptr.
      shr  eax, 27            ; Next digit
      and  edx, 07ffffffh     ; Fraction part
      or   ebx, eax           ; Accumulate next digit.
      or   eax, '0'           ; Convert digit to ASCII.
      mov  [edi], al          ; Store digit in memory.
      lea  eax, [edx*4+edx]   ; 5 * fraction, new digit EAX[31-26]
      lea  edx, [edx*4+edx]   ; 5 * fraction, new fraction EDX[25-0]
      cmp  ebx, 1             ; Any nonzero digit yet?
      sbb  edi, -1            ; Yes, increment ptr. No, keep old ptr.
      shr  eax, 26            ; Next digit
      and  edx, 03ffffffh     ; Fraction part
      or   ebx, eax           ; Accumulate next digit.
      or   eax, '0'           ; Convert digit to ASCII.
      mov  [edi], al          ; Store digit in memory.
      lea  eax, [edx*4+edx]   ; 5 * fraction, new digit EAX[31-25]
      lea  edx, [edx*4+edx]   ; 5 * fraction, new fraction EDX[24-0]
      cmp  ebx, 1             ; Any nonzero digit yet?
      sbb  edi, -1            ; Yes, increment ptr. No, keep old ptr.
      shr  eax, 25            ; Next digit
      and  edx, 01ffffffh     ; Fraction part
      or   ebx, eax           ; Accumulate next digit.
      or   eax, '0'           ; Convert digit to ASCII.
      mov  [edi], al          ; Store digit in memory.
      lea  eax, [edx*4+edx]   ; 5 * fraction, new digit EAX[31-24]
      lea  edx, [edx*4+edx]   ; 5 * fraction, new fraction EDX[23-0]
      cmp  ebx, 1             ; Any nonzero digit yet?
      sbb  edi, -1            ; Yes, increment ptr, No, keep old ptr.
      shr  eax, 24            ; Next digit
      and  edx, 00ffffffh     ; Fraction part
      or   ebx, eax           ; Accumulate next digit.
      or   eax, '0'           ; Convert digit to ASCII.
      mov  [edi], al          ; Store digit in memory.
      lea  eax, [edx*4+edx]   ; 5 * fraction, new digit EAX[31-23]
      lea  edx, [edx*4+edx]   ; 5 * fraction, new fraction EDX[31-23]
      cmp  ebx, 1             ; Any nonzero digit yet?
      sbb  edi, -1            ; Yes, increment ptr. No, keep old ptr.
      shr  eax, 23            ; Next digit
      and  edx, 007fffffh     ; Fraction part
      or   ebx, eax           ; Accumulate next digit.
      or   eax, '0'           ; Convert digit to ASCII.
      mov  [edi], al          ; Store digit out to memory.
      lea  eax, [edx*4+edx]   ; 5 * fraction, new digit EAX[31-22]
      lea  edx, [edx*4+edx]   ; 5 * fraction, new fraction EDX[22-0]
      cmp  ebx, 1             ; Any nonzero digit yet?
      sbb  edi, -1            ; Yes, increment ptr. No, keep old ptr.
      shr  eax, 22            ; Next digit
      and  edx, 003fffffh     ; Fraction part
      OR   ebx, eax           ; Accumulate next digit.
      or   eax, '0'           ; Convert digit to ASCII.
      mov  [edi], al          ; Store digit in memory.
      lea  eax, [edx*4+edx]   ; 5 * fraction, new digit EAX[31-21]
      lea  edx, [edx*4+edx]   ; 5 * fraction, new fraction EDX[21-0]
      cmp  ebx, 1             ; Any nonzero digit yet?
      sbb  edi, -1            ; Yes, increment ptr. No, keep old ptr.
      shr  eax, 21            ; Next digit
      and  edx, 001fffffh     ; Fraction part
      or   ebx, eax           ; Accumulate next digit.
      or   eax, '0'           ; Convert digit to ASCII.
      mov  [edi], al          ; Store digit in memory.
      lea  eax, [edx*4+edx]   ; 5 * fraction, new digit EAX[31-20]
      cmp  ebx, 1             ; Any nonzero digit yet?
      sbb  edi, -1            ; Yes, increment ptr. No, keep old ptr.
      shr  eax, 20            ; Next digit
      or   eax, '0'           ; Convert digit to ASCII.
      mov  [edi], ax          ; Store last digit and end marker in memory.
      pop  ebx                ; Restore register as per calling convention.
      pop  edi                ; Restore register as per calling convention.
      ret  8                  ; Pop two DWORD arguments and return.
   }
}



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
bsa
Дата 28.12.2007, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Действительно, мой вариант был медленней, так как оказалось, что функция div() не встраиваемая. Исправил на использование operator/() и operator%(), которые встраиваются.
Результаты:
мой вариант:
real    0m4.324s
user    0m4.288s
sys     0m0.008s
вариант baldina:
real    0m7.971s
user    0m7.944s
sys     0m0.028s

Тестировалось:
Код
int main()
{
        char a[100];
        long i;
        for(i = 0; i < 100000000l; ++i)
                int2str(10000, a);  //intToStr(10000, a);
        return 0;
}


Это сообщение отредактировал(а) bsa - 29.12.2007, 11:15
PM   Вверх
MAKCim
Дата 29.12.2007, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



W4FhLF, 
ассемблер тут не рассматривается


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
W4FhLF
Дата 29.12.2007, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



Цитата(MAKCim @  29.12.2007,  10:27 Найти цитируемый пост)
ассемблер тут не рассматривается


т.е. где тут? 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
MAKCim
Дата 29.12.2007, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



W4FhLF, 
в форуме по С++


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

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


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Кроме того, ассемблер не переносим.

Добавлено через 1 минуту и 47 секунд
Имеется в виду, на другие железоплатформы smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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