0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 27
|
||||||||||||||||
1 | ||||||||||||||||
Что означают эти конструкции?23.08.2014, 00:04. Показов 3234. Ответов 16
Метки нет (Все метки)
Вот начал изучать cpp , до этого изучал несколько языков, таких как pawn,php и т.д.
Вопросы: 1) Что означают такие конструкции как
0
|
23.08.2014, 00:04 | |
Ответы с готовыми решениями:
16
Что означают эти 2 определения? Объясните,что означают эти строки. Что означают эти объявления переменных? Помогите обьяснить что означают эти команды |
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
23.08.2014, 00:11 | 3 |
1) С++ типизированный язык в отличии от PHP. И тут переменная $test не может хранить всё. Поэтому прочитайте про явное преобразованние данных, в данном случаи мы указываем, чтобы cout прочитал адресс test как переменную типа DWORD.
2) в php такое же есть. класс->метод() Если работаем с объектом напрямую то Circle.draw(), если по указателю (указатель 4 байта на класс) то так : Circle->draw()
1
|
Заблокирован
|
|
23.08.2014, 07:22 | 4 |
Вся беда высоко и очень выокоуровневых языков в том, что они не дают понять, как устроенны ЭВМ и отупляют народ. Assembler & C++ forever
По делу, вот представь ситуацию в таком ракурсе, вот какой - то блок памяти твоего процесса: 0x34 0x11 0x55 0x66 вот смотри, это последовательность 4-х байтов, начиная с 0х34. Переменная DWORD из WinApi - это DOUBLE WORD, то есть двойное слово - 4 байта размером (простое слово - два байта). Теперь смотри ещё раз на свои байты 0x34 0x11 0x55 0x66. Если например ты приведёшь эту переменную к двух байтовой, то есть к обычному слову WORD, то эта переменная возьмёт первые два байты и из них формирует своё число, то есть будет просто WORD 0x34 0x11, приведёшь к BYTE (unsigned char) - будет один байт, то есть 0x34, понимаешь? Но на самом деле это ерунда, т.к. это в основном вызывает интерес, когда передаёшь в какую - то функцию простой указатель ни на что, то есть на пустоту так сказать - void* , то есть для внутренних операндов функции это всего лишь указатель на блок памяти с какого - то стартового адреса не известной длинны, а вот если ты знаешь, что там должно быть, ты приводишь этот указатель к чему угодно, например к тип класса Ладно, сложно это объяснит тому, кто не зная основ ЭВМ прыгнул на PHP
1
|
Voivoid
|
23.08.2014, 10:46
#5
|
0
|
76 / 36 / 17
Регистрация: 24.07.2014
Сообщений: 357
|
|
23.08.2014, 11:12 | 6 |
0
|
John Prick
|
23.08.2014, 11:56
#7
|
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
23.08.2014, 12:05 | 8 |
Декларация переменной указанного типа.
Добавлено через 51 секунду Декларация переменной типа int, которую зовут test, а инициируется она она значением 1. Добавлено через 28 секунд Нет такой конструкции.
0
|
98 / 34 / 9
Регистрация: 22.08.2014
Сообщений: 104
|
|
23.08.2014, 12:14 | 9 |
1. Так переменная одного типа переделывается в переменную. другого типа.
В С++ каждая переменная относится к какому-то из нескольких типов данных, его указывают при объявлении переменной и сам собой он не изменяется. Но если у вас функция выдает (возвращает) переменную логического типа (true или false), а вам надо целое число, пишете перед вызовом функции (int) 2. Если переменная->класс(), то эта переменная не сама по себе, а член класса, а то, что вы приняли за класс() - не класс, а метод класса. Соответственно, такая конструкция означает, что этот метод класса обработает эту переменную.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
23.08.2014, 12:15 | 10 |
1. Где у него хоть слово про указатели?
2. В общем случае может присвоиться любое слово, не только стартовое, но и завершающее, из середины, или вообще составленное из не соседних байтов. И байт может присвоиться любой. 3. Именно твой опус про асм и затмевает суть.
0
|
rikimaru2013
|
|||||
23.08.2014, 15:18
#11
|
|||||
Не по теме: Мне казалось, что преобразованние это то как будут интерпретироваться определённое количество бит, тоесть:
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||||||||||||
23.08.2014, 15:38 | 12 | |||||||||||||||
Ну ни нафиг было так шифровать? Даже я, зная и асм, и плюсы, не понял, чего ты хотел сказать.
Добавлено через 9 минут horr0rjkee, значения, параметры, операнды и переменные бывают разных типов, но иногда надо использовать значение/переменную одного типа для присваивания его переменной другого типа, передать значение/переменную одного типа в функцию в качестве параметра другого типа, или использовать значение/переменную одного типа в качестве операнда другого типа. В этом случае надо привести значение/переменную к требуемому типу. Для этого и используются операторы приведения, такой оператор выглядит, как заключённый в скобки целевой тип. То есть
0
|
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
|
||||||||||||||||
23.08.2014, 18:09 | 13 | |||||||||||||||
rikimaru2013, именно так и будет. Причём то же самое будет, если
Пример приведения типов.
0
|
2273 / 1764 / 741
Регистрация: 27.07.2012
Сообщений: 5,241
|
||||||
23.08.2014, 23:13 | 15 | |||||
А как тогда будет работать, например такое:
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
24.08.2014, 10:48 | 17 |
Регистры здесь абсолютно ни при чём, приведение типа - эта смена интерпретации данного, опционально сопровождающиеся изменением самого значения и/или разрядности. При привидении unsigend long int к unsigend short int выделяется младшее слово. Но какое из них младшее? 0x0F 0x34 0xDE 0x4C - это 0x0F34DE4C, или 0x4DE4C0F34? А может 0x340F4C0xDE? Это зависит от процессора, причём, не от регистров, а от того, отображается ли младшая часть регистра на младший, или на старший адрес. А unsigend long int* к unsigend short int* приводится без фактического преобразования, то есть ограничиваясь только сменой интерпретации данного как указатель на ячейку другого типа. Но при этом ни сам адрес, ни его запись адреса на низком уровне не меняются вовсе. Так что как раз низкоуровневые языки не всякое приведение типов даже поддерживают, а вот на высоком уровне, где приведение типов меняет саму информацию, а с кодом связано лишь в плане реализации, вот там как раз для приведений полный простор и любое приведение можно разобрать и даже можно написать реализацию оператора приведения.
Добавлено через 5 минут А нафиг так шифровать тогда?
0
|
24.08.2014, 10:48 | |
24.08.2014, 10:48 | |
Помогаю со студенческими работами здесь
17
Что означают эти значения красным цветом? что означают эти 0x378 или 888 в языке C++? Что означают -> в c++ ? Что означают != Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |