Пятница, 25.05.2012, 23:40

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Страница 1 из 212»
Модератор форума: nilrem 
Форум игроделов » Программирование » C/C++ » Какого значение скобок?
Какого значение скобок?
JoraKornevДата: Среда, 25.01.2012, 01:18 | Сообщение # 1
частый гость
Сообщений: 30
Сейчас нет на сайте
Всем привет! В данный момент занимаюсь переносом одного примера с Си++, на другой язык, полистал учебники по синтаксису языка и воде бы все хорошо, но не могу понять вот что: Допустим такой код, Пле[Бла] = Фли[Бла] * Бла / на что то там; Так вот собственно такой вопрос: Какого значение квадратных скобок? Что да как и желательно попонятней)) Заранее всем спасибо)
 
noTformaTДата: Среда, 25.01.2012, 01:23 | Сообщение # 2
Ukrainian independent game developer
Сообщений: 3618
Сейчас нет на сайте
ну, скобки используются в массивах, в первую очередь в индексных массивах.
[] - доступ к определенному элементу массива с определенным индексом.
если myArray это переменная массив, то myArray[10] вернет 11 элемент массива, в с++ с нуля идет отчет.
В целом, вот ответ. Индексный массив

@noTformaT
Блог разработчика игр: PythonAnywhere! Пишите на Python везде.
РЕЛИЗ. Glow Web. [2d][flash]
РЕЛИЗ. Flow Orb. [2d][flash]
 
JoraKornevДата: Среда, 25.01.2012, 01:27 | Сообщение # 3
частый гость
Сообщений: 30
Сейчас нет на сайте
noTformaT, Спасибо! Выручил сейчас буду разбираться) Слушай, а вот еще вопрос маленький: Допусти А += В тоже самое что и А = А + В, а что дает то? простота написания или ускоряет работу?
 
RikettaДата: Среда, 25.01.2012, 05:07 | Сообщение # 4
Strategist
Сообщений: 597
Сейчас нет на сайте
Простота написание, приятнее код. Работу, нет. Компилятор и то, и то в одно переведет все равно.
Это удобнее тогда, когда у тебя что-то вроде:
Code
textBoxLOG.Text += "Время ожидания ответа по умолчанию: " + TimeOut + " Миллисекунд (" + TimeOutSec + " секунд)" + Environment.NewLine;

Code
textBoxLOG.Text = textBoxLOG.Text + "Время ожидания ответа по умолчанию: " + TimeOut + " Миллисекунд (" + TimeOutSec + " секунд)" + Environment.NewLine;


Это шарпокод (CSharp, C#), но в C++ с учетом его синтаксиса, будут ситуации и похлеще, это чище, красивее, удобнее.

Работаю с C#, XNA и WM Engine.
Arduino - аппаратная вычислительная платформа
Стоик - Экономическая 2D RTS
InfoBox 1.2 - Вышла финальная версия.
 
ApatiДата: Среда, 25.01.2012, 10:50 | Сообщение # 5
заслуженный участник
Сообщений: 537
Сейчас нет на сайте
Quote (JoraKornev)
Допусти А += В тоже самое что и А = А + В, а что дает то?

Riketta, правильно сказал, добавлю еще, что благодаря оператору "+=", операнд "А" вычисляется только один раз вместо двух. Это дает оптимизацию в некоторых случаях, например когда операндом "А" является функция, возвращающая указатель на какой-то объект, например:
Code
int& FindMaxElement(){/*поиск максимального элемента*/}
...
FindMaxElement() += 10; //поиск элемента происходит один раз
FindMaxElement() = FindMaxElement() + 10;//а здесь дважды
 
StageДата: Среда, 25.01.2012, 13:46 | Сообщение # 6
постоянный участник
Сообщений: 289
Сейчас нет на сайте
Quote
Это шарпокод (CSharp, C#), но в C++ с учетом его синтаксиса, будут ситуации и похлеще, это чище, красивее, удобнее.

Да у тебя говнокод обычный, вместо String.Format городить нечитаемые конструкции с плюсами.
 
RorschachДата: Среда, 25.01.2012, 13:55 | Сообщение # 7
участник
Сообщений: 204
Сейчас нет на сайте
Apati, как функция может быть lvalue? Или в шарпе все-таки может?

Never compromise. Not even in the face of Armageddon.
 
ApatiДата: Среда, 25.01.2012, 13:58 | Сообщение # 8
заслуженный участник
Сообщений: 537
Сейчас нет на сайте
Quote (Rorschach)
Apati, как функция может быть lvalue? Или в шарпе все-таки может?

Я привел пример на С++. В шарпе не уверен, но по-моему может.
 
RorschachДата: Среда, 25.01.2012, 14:02 | Сообщение # 9
участник
Сообщений: 204
Сейчас нет на сайте
В С++ не может, поэтому я и подумал, что это какой-то другой язык :Р

Never compromise. Not even in the face of Armageddon.
 
MontegДата: Среда, 25.01.2012, 14:03 | Сообщение # 10
почетный гость
Сообщений: 69
Сейчас нет на сайте
Зачем создавать тему с очевидными вопросами, ответы на которые найдутся в любой книжке?
 
noTformaTДата: Среда, 25.01.2012, 14:05 | Сообщение # 11
Ukrainian independent game developer
Сообщений: 3618
Сейчас нет на сайте
Quote (Rorschach)
В С++ не может, поэтому я и подумал, что это какой-то другой язык :Р

мммм, int& FindMaxElement() - возвращает ссылку. вроде бы как должно сработать, хотя такой техники кодинга не видел.

@noTformaT
Блог разработчика игр: PythonAnywhere! Пишите на Python везде.
РЕЛИЗ. Glow Web. [2d][flash]
РЕЛИЗ. Flow Orb. [2d][flash]
 
ApatiДата: Среда, 25.01.2012, 14:10 | Сообщение # 12
заслуженный участник
Сообщений: 537
Сейчас нет на сайте
Quote (Rorschach)
В С++ не может

Тогда почему работает это?:
Code
#include <iostream>

int& f(){static int i=0; return i;}
int main()
{
f()++;
std::cout<< f() << std::endl;
f()+=2;
std::cout<< f() << std::endl;
f()*=3;
std::cout<< f() << std::endl;
f()=999;
std::cout<< f() << std::endl;
return 0;
}
 
RorschachДата: Среда, 25.01.2012, 14:41 | Сообщение # 13
участник
Сообщений: 204
Сейчас нет на сайте
Работает, потому что в качестве lvalue здесь не функция а int, то есть возвращаемое значение, которое я проморгал выше.

Never compromise. Not even in the face of Armageddon.
 
AikidosДата: Среда, 25.01.2012, 14:42 | Сообщение # 14
постоянный участник
Сообщений: 264
Сейчас на сайте
Quote (Apati)
Тогда почему работает это?

Жесть. Никогда так не кодил. Зато, в очередной раз, убедился в гибкости С++ smile

Нет рабства безнадежнее, чем рабство тех рабов, себя кто полагает свободным от оков.
 
StageДата: Среда, 25.01.2012, 14:48 | Сообщение # 15
постоянный участник
Сообщений: 289
Сейчас нет на сайте
Quote
Зато, в очередной раз, убедился в гибкости С++

Это не гибкость - это возможность выстрелить себе в ногу.
 
ApatiДата: Среда, 25.01.2012, 15:09 | Сообщение # 16
заслуженный участник
Сообщений: 537
Сейчас нет на сайте
Quote (Stage)
Это не гибкость - это возможность выстрелить себе в ногу.

Дай дураку пистолет - так он не только ногу прострелит, но и других поубивает.
 
StageДата: Среда, 25.01.2012, 15:12 | Сообщение # 17
постоянный участник
Сообщений: 289
Сейчас нет на сайте
Quote
Дай дураку пистолет - так он не только ногу прострелит, но и других поубивает.

Любимая басня плюсо-кодеров.
 
ComentДата: Среда, 25.01.2012, 17:40 | Сообщение # 18
частый гость
Сообщений: 57
Сейчас нет на сайте
Кстати интересный как для меня момент, правда не с плюсов взят.
Если в Java написать:

byte b=2;

b+=2; // все гут.

а вот:

b=b+2;// даст ошибку . Идет преобразование int к byte.

Сорри за офтоп wink
 
MatouДата: Среда, 25.01.2012, 20:54 | Сообщение # 19
Программист-багомейкер
Сообщений: 536
Сейчас нет на сайте
Quote (noTformaT)
мммм, int& FindMaxElement() - возвращает ссылку. вроде бы как должно сработать, хотя такой техники кодинга не видел.

А где смотрел?

class String{
//...
String& operator=(String& s){
//...
return *this;
}
//...
};

class Pointer{
//...
Ptr p;
Pointer& operator*() {return *p};
//...
};

Перегрузка операторов приравнивания, инкремента/декремента, разыменования, взятия индекса только на этом принципе и основана.



Сообщение отредактировал Matou - Среда, 25.01.2012, 20:56
 
noTformaTДата: Среда, 25.01.2012, 21:35 | Сообщение # 20
Ukrainian independent game developer
Сообщений: 3618
Сейчас нет на сайте
Quote (Matou)
А где смотрел?

Quote (Matou)
Перегрузка операторов приравнивания, инкремента/декремента, разыменования, взятия индекса только на этом принципе и основана.

не спорю, но все же подобный код или что-то подобное:
myFunc() = 10 + MyFunc();
Не встречал.

Одно дело "перегрузка операторов", другое дело код который выше.

Кстати, решил попробовать реализовать код выше на ас3. Хотя там все передается по ссылке, но нифига не работает.

Code
function getNum():Number
{
var a:Number = new Number();
return a;
}

getNum() += 10;

И слава богу.

Quote (Coment)
даст ошибку . Идет преобразование int к byte.

эта ошибка есть не только в джаве, в шарпе например тоже. К счастью ас3 программисты и js лишены таких проблем с приведением типов. У нас нет понятия байт, флоат, инт и т.д. Число для нас это объект smile Но тут вылезают свои минуса smile

@noTformaT
Блог разработчика игр: PythonAnywhere! Пишите на Python везде.
РЕЛИЗ. Glow Web. [2d][flash]
РЕЛИЗ. Flow Orb. [2d][flash]


Сообщение отредактировал noTformaT - Среда, 25.01.2012, 21:35
 
Форум игроделов » Программирование » C/C++ » Какого значение скобок?
Страница 1 из 212»
Поиск:

Все права сохранены. GcUp.ru © 2008-2012 Рейтинг