Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Для чего ставим присвоение переменной


Автор: n199a 17.4.2013, 19:14
Для чего в этом примере ставится присвоение (0) переменной (symvol):
Код

    symvol = 0;

Вот полный код:
Код

#include <stdio.h>

main()
{
    long symvol;
    
    symvol = 0;
    while (getchar() != OEF)
        ++symvol;
    printf("%ld\n", symvol);
}

Автор: Crafty 17.4.2013, 19:42
n199a, переменную инициализируют нулем, потому что удобно начинать считать с нуля, плюс если неиницилизировать то в ней будет находится мусор.

Автор: n199a 17.4.2013, 19:55
Цитата(Crafty @  17.4.2013,  19:42 Найти цитируемый пост)
n199a, переменную инициализируют нулем, потому что удобно начинать считать с нуля, плюс если неиницилизировать то в ней будет находится мусор. 

Теперь понятно. Переплетается с Ассемблером (mov ax,****).


Автор: bsa 18.4.2013, 16:31
Цитата(n199a @  17.4.2013,  20:55 Найти цитируемый пост)
Переплетается с Ассемблером (mov ax,****)
причем тут ассемблер?

Автор: baldina 18.4.2013, 17:01
ничего не переплетается.
Цитата(n199a @  17.4.2013,  19:14 Найти цитируемый пост)
long symvol;

объявляет переменную, но не определяет её значение (не инициализирует), её значение может оказаться любым. поэтому до инициализации переменной любые операции с её значением не имеют смысла.
в вашем коде по завершении цикла symvol, видимо, должен содержать число прочитанных байт. естественно, если ввод пуст, то это число - 0. отсюда начальное значение (а вовсе не потому, что так принято).

Добавлено через 2 минуты и 27 секунд
Цитата(n199a @  17.4.2013,  19:14 Найти цитируемый пост)
OEF

EOF

Автор: n199a 20.4.2013, 11:53
Цитата(bsa @  18.4.2013,  16:31 Найти цитируемый пост)
причем тут ассемблер? 

При том, что, MOV AX,1 присваивает регистру AX значение 1, а если этого не сделать, то там будет старый мусор.

Автор: kolesnle 20.4.2013, 21:01

Лучше писать так 
Код

long symbool = 0;

 поверь smile 

Автор: bsa 20.4.2013, 21:40
n199a, операция mov не присваевает. А засылает. У других процессоров (отличных от x86) используется ld/load - загрузить.
И не надо пытаться бравировать своими знаниями ассемблера, учитывая, что они почти нулевые и сильно устарели.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)