Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

char и память

2.0K
22 апреля 2004 года
Son!K
29 / / 05.06.2003
Хай алл.

Народ объясните тупому плиз одну фишку. Я новичёк ни как не въеду.

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

union umy{
    char ch[2];
    int i;
};

char *addnl(char *text);

void main(void)
{
    union umy u_var;
    char ch_t[5];

    //***********************************
    memset(ch_t, 5, '\0');
    u_var.i = 0;
    itoa(u_var.i, ch_t, 10);
    addnl(ch_t);
    printf(ch_t);
    //***********************************
    memset(ch_t, 5, '\0');
    u_var.ch[0] = 'e';
    u_var.ch[1] = 'r';
    itoa(u_var.i, ch_t, 10);
    addnl(ch_t);
    printf(ch_t);

    getchar();
}

char *addnl(char *text)
{
    strcat(text, "\n");
    return text;
}


Пытаюсь разобраться с памятью и т.д. Написал програмку, если поле чар в объединение делаю длинной 1 и кладу символ 'e' в память, то при выводе инта получаю число 101 = 0х65 всё понятно, а когда делаю длинну поля 2 чара, и кладу 2 символа как в примере получаю числи 29285 как оно получаеться если если код первого символа 101 а второго 114?

Зарание благодарен.
4.9K
22 апреля 2004 года
mrhx
43 / / 04.04.2004
Цитата:
Originally posted by Son!K
Хай алл.

Народ объясните тупому плиз одну фишку. Я новичёк ни как не въеду.

 
Код:
union umy{
    char ch[2];
    int i;
};


Пытаюсь разобраться с памятью и т.д. Написал програмку, если поле чар в объединение делаю длинной 1 и кладу символ 'e' в память, то при выводе инта получаю число 101 = 0х65 всё понятно, а когда делаю длинну поля 2 чара, и кладу 2 символа как в примере получаю числи 29285 как оно получаеться если если код первого символа 101 а второго 114?

Зарание благодарен.



Все ж просто! Первый байт твоего инта - 101, а второй - 114, таким образом 114*256+101=29285!!!!!
То есть типа твой массив чаров/байтов накладывается на инт, вот и результат! :)

2.0K
22 апреля 2004 года
Son!K
29 / / 05.06.2003
Цитата:
Originally posted by mrhx


Все ж просто! Первый байт твоего инта - 101, а второй - 114, таким образом 114*256+101=29285!!!!!
То есть типа твой массив чаров/байтов накладывается на инт, вот и результат! :)



Спасиб, кому просто кому не очень ;)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог