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


Автор: Женько 17.7.2009, 23:54
я в определенных вариантах присваиваю перменной startMonth некот стринговые значения типа 01,02,03....

все норм.
все цифры типа 01,02,03... билдеру понятны(подсвечены).
а именно 08 и 09 не понятны (тка и остались черными).
и при компиляции он ругается.
Мол:

[C++ Error] Unit1.cpp(84): E2325 Illegal octal digit
Как убедить билдер, что 08 и 09 тож не плохие строки?

в коде так 

Код

...
 if (ComboBox2->Text=="èþëü")endMonth=07;
 if (ComboBox2->Text=="àâãóñò")endMonth=08;
 if (ComboBox2->Text=="ñåíòÿáðü")endMonth=09;
 if (ComboBox2->Text=="îêòÿáðü")endMonth=10;
 ...


Автор: Данкинг 18.7.2009, 00:05
А endMonth какого типа? Если Int, то зачем впереди ставить 0 ?

Автор: Женько 18.7.2009, 00:09
ПРвет снова
Переменная астринговая, а "0" мне там оч нужен

Добавлено через 10 минут и 51 секунду
Я победила его)) Спасибо за внимание))) smile 

Автор: ИванМ 18.7.2009, 00:23
Если ставится ноль слева, это означает, что число в 8-ричной системе счисления. Поэтому, естественно, на 08 и 09 он будет ругаться, потому что таких чисел не существует.

Автор: Cheloveck 18.7.2009, 04:22
Цитата(Женько @  18.7.2009,  00:54 Найти цитируемый пост)
Как убедить билдер, что 08 и 09 тож не плохие строки?

Сказать ему, что это строки, думаю. Взять в кавычки тобишь

Автор: Женько 18.7.2009, 08:48
ИванМ, но ведь на 01 и 02.. не ругается.. все равно не пойму.
я то разобралась, действительно мне не хватало ковычек))
но в чем разница между 08 и 01, для меня осталось загадкой...

Автор: zim22 18.7.2009, 09:07
Цитата(Женько @  18.7.2009,  08:48 Найти цитируемый пост)
но в чем разница между 08 и 01, для меня осталось загадкой...

Цитата(ИванМ @  18.7.2009,  00:23 Найти цитируемый пост)
Если ставится ноль слева, это означает, что число в 8-ричной системе счисления. Поэтому, естественно, на 08 и 09 он будет ругаться, потому что таких чисел не существует.


Автор: Cheloveck 18.7.2009, 14:15
Цитата(Женько @  18.7.2009,  09:48 Найти цитируемый пост)
но в чем разница между 08 и 01, для меня осталось загадкой... 

строка есть указатель на массив символов. Указатель есть целое число. 01, 02... восьмиричная форма записи целого числа. Вот у тебя и получается, что всё работает, но на деле у тебя будет рантайм эррор.

Автор: xvr 20.7.2009, 13:41
Читай правила записи целых чисел в С: например 100 - это число 100, а 0100 - это 64 (100 в восьмеричной системе счисления), а 0x100 - это 256

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