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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
raindeath
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 27
#1

Допускается ли в С + + следующий фрагмент программы? - C++

27.11.2013, 04:16. Просмотров 338. Ответов 7
Метки нет (Все метки)

Допускается ли в С + + следующий фрагмент программы? Если «да» - опишите семантику этих действий; если «нет» - объясните почему.

C++
1
2
void ques (char *s1, char *s2, int n)
    { while (*s1 && *s2 && n-- && (*s1++ = *s2++)); }
И второе заданиес таким же условием:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
file f1:
    #include <stdio.h>
    extern int f(void)
    int i;
    main()
    {
        printf(“res = %d\n”, i + f() + f());
    }
    file f2;
    int f(void)
    {
        static int i = 10;
        return i--;
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2013, 04:16     Допускается ли в С + + следующий фрагмент программы?
Посмотрите здесь:

Что выведет следующий фрагмент программы и почему? - C++
double a = 0.3, b = 5.1; if (5.4 == a + b) cout « &quot;равно&quot;; else cout « &quot;не равно&quot;; При компиляции выводит не равно,...

Используя следующий фрагмент программы,введите перечисленные ниже слова из списка С содержащие ровно две буквы d - C++
Ребят помогите.нужно написать прогу на С++.Проблема со строками я вообще без понятия как делать.Нужно сделать как я понял через char...

Объяснить фрагмент программы - C++
Здравствуйте. Нашел одну программу, пытаюсь в ней разобраться. Не могу понять следующий фрагмент: int comp(const void *a, const void *b) ...

Не работает фрагмент программы - C++
Если выдает ошибку, то после последующего ее исправления (присвоить переменной b значение != 0) не выводит результат деления. Может я...

Составить фрагмент программы - C++
С коментприями, если не трудно

Составить фрагмент программы - C++
С коментприями, если можна!!!

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
1446 / 1175 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
27.11.2013, 05:33     Допускается ли в С + + следующий фрагмент программы? #2
Цитата Сообщение от raindeath Посмотреть сообщение
void ques (char *s1, char *s2, int n)
{ while (*s1 && *s2 && n-- && (*s1++ = *s2++)); }
Похоже на strncpy, только вот '\0' не добавляются в конце и s2 почему то не char const*.
Цитата Сообщение от raindeath Посмотреть сообщение
И второе заданиес таким же условием:
Код не корректный.
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
27.11.2013, 05:38     Допускается ли в С + + следующий фрагмент программы? #3
gray_fox, вот не понимаю, постфиксный инкремент же по старшинству выше, чем разыменование. Тогда сначала инкремент указателя должен выполниться, а потом уже разыменование. Получается, что копирование должно начаться со второго символа. Но здесь строка копируется сначала. В чём моя ошибка?
gray_fox
What a waste!
1446 / 1175 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
27.11.2013, 05:42     Допускается ли в С + + следующий фрагмент программы? #4
StackOverflow, да, сначала происходит сам инкремент, но возвращается старое значение. Даже перегрузки этого оператора пишут часто через префиксный как
C++
1
2
3
type copy(*this);
++(*this);
return copy;
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
27.11.2013, 05:48     Допускается ли в С + + следующий фрагмент программы? #5
Понял, спасибо. А что насчёт этой конструкции *s1 && *s2 ? Для чего она здесь? Убрал я её, результат тот же.
gray_fox
What a waste!
1446 / 1175 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
27.11.2013, 06:01     Допускается ли в С + + следующий фрагмент программы? #6
StackOverflow, да вроде не зачем.

Добавлено через 2 минуты
Хотя, если подумать: адресная арифметика для указателей определена (?) только в пределах массива, насколько я помню; тогда, если строка пуста (один завершающий '\0') и происходит инкремент, то -> выход за пределы массива... хотя вряд ли конечно, просто мысль...)

Добавлено через 8 минут
В принципе всё равно ничего страшного произойти не должно.
raindeath
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 27
27.11.2013, 18:44  [ТС]     Допускается ли в С + + следующий фрагмент программы? #7
gray_fox, так этот код правильный?
и как насчет второго?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2013, 10:49     Допускается ли в С + + следующий фрагмент программы?
Еще ссылки по теме:

Разъясните пожалуйста фрагмент программы - C++
Даны произвольные числа a b c.Написать программу,которая проверяла бы,можно ли построить треугольник с такими длинами сторон, и если можно,...

Что делает следующий код программы? - C++
Что делает следующий код программы: Int i; Int j; For(j=0; j&lt;10; j++) {i=j;}

Помогите пожалуйста записать на С++ фрагмент программы - C++
помогите пожалуйста записать на С++ фрагмент программы) const s:string='0123456789ABCDEF'; c:array of...

Оформить фрагмент программы в виде оператора цикла с предусловием - C++
while do 2)Имеется фрагмент программы в виде оператора цикла с параметром,обеспечивающий вывод на экран &quot;столбиком&quot; всех целых чисел от...


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

Или воспользуйтесь поиском по форуму:
gray_fox
What a waste!
1446 / 1175 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
28.11.2013, 10:49     Допускается ли в С + + следующий фрагмент программы? #8
Цитата Сообщение от raindeath Посмотреть сообщение
gray_fox, так этот код правильный?
Такой код допускается.
Цитата Сообщение от raindeath Посмотреть сообщение
и как насчет второго?
Уже писал, код некорректный.
Yandex
Объявления
28.11.2013, 10:49     Допускается ли в С + + следующий фрагмент программы?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru