Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Что выводит данные програмы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Даны действительные числа а,b и с. http://www.cyberforum.ru/cpp-beginners/thread27183.html
Даны действительные числа а,b и с. Удвоить эти числа, если a>=b>=c, и заменить их абсолютными значениями, если не так. Добавлено через 5 минут 8 секунд #include <iostream.h> #include...
C++ Вывести минимальное и максимальное значения в массиве Написать программу, которая позволяет двухмерный заполнить массив случайным образом значениями в диапазоне от -100 до 100 и выводит минимальное и максимальное значения в этом массиве. Диалог с... http://www.cyberforum.ru/cpp-beginners/thread27108.html
Массив,сортировка,файлы. C++
вообщем надо сформировать динамический массив из вещественных чисел(ввод с клавиатуры),сформировать их по убыванию.вывести в двоичный файл все вещественные числа и вывести на экран сумму и среднее...
C++ Программа: Итерационные циклы
Подробнее во вложении: Помогите составить программу на С++
C++ Составить программу вычисления значений функций на отрезках http://www.cyberforum.ru/cpp-beginners/thread27097.html
Помогите пожалуйста составить программу на языке С++ Составить программу вычисления значиний функций F(x) на отрезке Подробнее во вложении:
C++ Алгоритмы сортировок Наиболее часто задаваемые вопросы по С++. Реализация распространенных алгоритмов, решения типовых задач. Статьи и учебники C++ Оглавление: Выбором Пузырьком Вставками Шелла подробнее

Показать сообщение отдельно
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.03.2009, 01:39
справа налево

Код
++chpp :

(chpp = chpp + 1) == (chp+1 + 1) == (chp + 2) 

chp + 2 == &chp[0] + 2

chp[] = { ch+2, ch, ch+1, ch+3 }
            |          |
          chp[0]     chp[2] 
            |           |
        &chp[0] + 2 == &chp[2]  

++chpp == &chp[2]
Код
*++chpp :

*++chpp == *(&chp[2]) == chp[2]

chp[] = { ch+2, ch, ch+1, ch+3 }
                      |
                     chp[2]

chp[2] == ch+1 == &ch[0] + 1 (ch - это имя массива, а оно как известно превращается в указатель на самый первый элемент, потому ch == &ch[0] также, как chp == &chp[0])

&ch[0] + 1 == &ch[1] также, как &chp[0] + 2 == &chp[2]
Код
--*++chpp :

--*++chpp == --(&ch[0] + 1) == --(&ch[1])

так как мы работаем с chp[2] на данном этапе, оно является именующим выражением и поэтому его можно менять (операция -- содержит присваивание, поэтому требуется, чтобы выражение, к которому она применяется было именующим, то есть с которым возможно провести операцию присваивания)

--(&ch[1]) == --(chp[2]) == chp[2] = chp[2] - 1 == chp[2] = &ch[1] - 1 == chp[2] = &ch[0]
Код
*--*++chpp :

*(&ch[0]) == ch[0]

ch[] = { "12345", "ABCD", "67800", "3411" }
           |
          ch[0]

ch[0] хранит в себе адрес строки "12345", которая записана в неменяемом, но читаемом пространстве и которая называется строковым литералом, или строковой константой, при этом строковая константа относится к классу лексем компилятора, но не относится к константам языка

при выводе берётся адрес первого символа и выводится всё до символа '\0' , которым заканчивается любая строка в языке C
нули второй строки выводятся из-за того, что она доходит до адреса первого символа той строки и потом переходит на три адреса вправо и чтение начинает оттуда и тоже до нуль-символа выводит, у которого тоже адрес есть (если что )
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru