Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
-2 / 0 / 1
Регистрация: 24.04.2011
Сообщений: 55

Куча вопросов..

11.06.2011, 14:42. Показов 1000. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В связи с последовательным изучением С++ и с параллельным при этом отсутствием рабочего подключения к Интернету у меня накопилась куча вопросов, важных и не особо, ответов на оные мой пытливый ум самостоятельно постичь не в состоянии.

0) таблица приоритетов
++i --i (префиксные инкремент и декремент)
- * & ! (унарный минус, получить значение, получить адрес, отрицание)
* / % (умножение, деление, остаток от целочисленного деления)
+ - (сложение, вычитание)
> >= < <= (больше, больше либо равно, меньше, меньше или равно)
== != (равно, не равно)
<< >> (ввод, вывод)
&& || (логическое умножение, логическое сложение)

Замечания, предложения и т.п.


1)
C++
1
2
3
4
5
6
7
int a, b, c;
 
a = 2;
b = 2;
c = 3;
 
cout << (a == b <= c);
результат 0. Если изменить значение переменной а на 1, то результат станет 1. Мои мысли относительно "почему": оператор <= по приоритету выше, чем оператор ==. Тогда результат операции b <= c - истина. Итог же выражения в целом в первом случае есть 0 (другими словами, 2 не равно 1), а во втором - 1 (так-то да, 1 равно 1). Верно рассуждаю?

2)
а.
C++
1
2
3
for (char letter='A'; letter<='z'; letter++) {
cout << letter << " ";
}
б.
C++
1
2
3
for (char letter='А'; letter<='я'; letter++) {
cout << letter << " ";
}
в.
C++
1
2
3
for (char letter='J'; letter<='г'; letter++) {
cout << letter << " ";
}
Почему работают варианты а и б, но при этом не работает вариант в?
З.Ы. В варианте б заглавная буква А - это русская буква.

3)
C++
1
2
3
4
char str[] = "маленькие буквы";
 
for (int i=0; str[i]; i++)
cout << toupper(*(str+i)) << ' ';
Функция toupper, по утверждению г-на Шилдта, преобразует строчный символ в прописной эквивалент. Однако возвращаются какие-то отрицательные целые числа.. К чему бы это? С англицкими - всё путём.
З.Ы. И, что примечательно, если добавить к этим числам 256 и привести к типу char, то получатся оригинальные буквы.

4)
Тот же г-н Шилдт с пеной у рта заставляет использовать прототипы, т.е. такие структуры

C++
1
2
3
4
5
6
7
8
9
int func(int num); //это прототип функции
    
int main() {
    func(1); //вызов функции
}
    
int func(int num) {
    return num; //объявление функции
}
Мне это ужасно не нравится. Для меня приемлимо такое построение

C++
1
2
3
4
5
6
7
int func(int num) {
    return num; //инициализация и объявление функции
}
 
int main() {
    func(1); //вызов функции
}
Поскольку и читается, и смотрится лучше и т.п. Кстати, тоже отношение у меня и к инициализации и заодно объявлению переменных. Надеюсь, стандарт не запрещает это?

5) Кстати, кто внимательно читал третий вопрос, мог заметить, что я индексирвал массив не классическим способом, а с помощью указателей. Автор книги говорил, что так оно круче выглядит, да и работает быстрее. Меня как-то особо крутизна не тревожит, важнее то, что и правда оно так порезвее, м?

6) Как на английский переводится нашенский "указатель"? Просто у меня привычка есть. Хз, мб не хочу казаться быдлокодером, но все управляющие переменные в for'ах у меня называются i (благо, локальные они в пределах цикла, чо), все названия массивов содержут arr, да и вобще стараюсь использовать инглиш для именования переменных и прочей..

Добавлено через 3 минуты
7) Недавно таки научился пользоваться Free Compiler 5.5 от Borland'a. Всё бы хорошо, но он заставляет использовать вместо main() функцию _tmain(). Можетк объяснить почему?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.06.2011, 14:42
Ответы с готовыми решениями:

Стек и куча
Вроде разобрался с этими зверями, хочется уточнить некоторые моменты на понимание: физически они в ОЗУ, сначала сегмент кода программы,...

биномиальная куча
подкиньте какой литературы или пример формирования и редактирования биномиальной кучи, буду очень благодарен

Повреждена куча
Запускаю - если ввожу любое число больше 2х, то все работает. Но если пишу количество: 2, программа не воспроизводит результат. И пишет,...

10
В вечном поиске...
 Аватар для Nursik77
275 / 235 / 30
Регистрация: 05.04.2011
Сообщений: 645
11.06.2011, 14:50
Пункт 0 и 1 нужно постичь самому, вот для большего понимания представляю вам таблицу логических операторов: && и ||
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h> 
#include<conio.h>
main()
{ 
int i,j;
clrscr();
printf("Logic operators && and || \n\n");
for(i=0;i<2;i++) 
   for(j=0;j<2;j++)
  { 
     printf("%d && %d = %d ",i,j,i&&j); 
     printf("  %d || %d = %d\n\n",i,j,i||j);
   }
getch();
}
Логические операторы >,>= и <,<=
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h> 
#include<conio.h>
main()
{ 
int i,j;
clrscr();
printf("Logic operators >,>= and <,<= \n\n");
for(i=0;i<2;i++) 
   for(j=0;j<2;j++)
  { 
     printf("%d > %d = %d ",i,j,i>j);
     printf("  %d >= %d = %d",i,j,i>=j);
     printf("   %d < %d = %d",i,j,i<j);
     printf("    %d <= %d = %d\n\n",i,j,i<=j);
   }
getch();
}
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
11.06.2011, 14:55
2)Если использовать char, то у русских букв будет отрицательное значение. Таким образом условие истинно с самого начала. Вообще это platform-specific вроде..
3)Думаю, что тоже самое. В toupper передается отрицательное число. Если вы про то, что выводятся числа - toupper принимает int и возвращает int. Используйте явное приведение типов.
4)В некоторых случаях, например при косвенной рекурсии прототипы необходимы.
6)pointer
1
-2 / 0 / 1
Регистрация: 24.04.2011
Сообщений: 55
11.06.2011, 15:01  [ТС]
А что такое platform-specific?

Добавлено через 1 минуту
Зависит от платформы?
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
11.06.2011, 15:03
Зависит от платформы.
Т.е. на одной платформе может быть одно, на другой - другое. Т.к. сижу под линуксом, то на счет винды не уверен
0
-2 / 0 / 1
Регистрация: 24.04.2011
Сообщений: 55
11.06.2011, 15:10  [ТС]
Угу, в целом вроде всё понятно. Только вот насчёт пятого вопроса.. Действительно ли более предпочтительно использовать указатели при индексации массивов?
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
11.06.2011, 15:12
Читал в книге Страуструпа, что перебор с помощью указателей и индексов одинаков по скорости, и выбор между ними нужно делать не из соображений скорости...
Вот
Не существует фундаментальных причин, по которым одна из этих версий кода была бы эффективнее другой. Современные компиляторы должны превращать оба варианта в одинаковые фрагменты машинного кода. Программисты вольны выбирать между ними, исходя из логических или эстетических соображений.
0
В вечном поиске...
 Аватар для Nursik77
275 / 235 / 30
Регистрация: 05.04.2011
Сообщений: 645
11.06.2011, 15:13
Я бы сказал, круче и короче.
1
-2 / 0 / 1
Регистрация: 24.04.2011
Сообщений: 55
11.06.2011, 15:33  [ТС]
Ясно. Ну а насчёт _tmain() можно сказать, что это причуды компилятора?

Добавлено через 8 минут
Ясно. Ну а насчёт _tmain() можно сказать, что это причуды компилятора?
0
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
11.06.2011, 15:40
Цитата Сообщение от ramses Посмотреть сообщение
Ясно. Ну а насчёт _tmain() можно сказать, что это причуды компилятора?
Поддержка UNICODE.. на самом деле _tmain() это wmain() или main()
1
-2 / 0 / 1
Регистрация: 24.04.2011
Сообщений: 55
11.06.2011, 15:57  [ТС]
Хм. При компиляции я указываю ключ -tWU, отвечающий за поддержку юникода. Следовательно, это лишнее?

Добавлено через 4 минуты
А с другой стороны, без него не работает.. Не важно. Всем спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.06.2011, 15:57
Помогаю со студенческими работами здесь

что такое КУЧА?
что такое КУЧА?

Куча непонятных ошибок
Вот код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; int main() { std::ifstream ifs(&quot;test.txt&quot;,...

Что такое куча
new (C++) Материал из Википедии — свободной энциклопедии new — оператор языка программирования C++, обеспечивающий выделение...

Куча в DLL и EXE
Что-то не понимаю - почему куча exe и dll разная, ведь адресное пространство процесса одно?

Динамическое выделение памяти. Куча
Сказали написать &quot;свою&quot; кучу. На примере malloc, free (которые используются в С) и new, delete (С++). реализовать надо в виде блоков,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru