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

Сложение указателей - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как написать программу с функцией http://www.cyberforum.ru/cpp-beginners/thread562919.html
Короче, у меня есть программа, как написать её с функцией?#include <iostream> #include <math.h> #include <stdio.h> #include <conio.h> using namespace std; int main() { int A,NB,NA,i,j,G;...
C++ Преобразование символов в числа Помогите пожалуйста написать программу. Дан текст, имеющий вид: d1\pm d2\pm...\pm dn, где di-цифры.Вычислить значение данного выражения. http://www.cyberforum.ru/cpp-beginners/thread562914.html
В строке имеются только две одинаковые буквы. Найти их. C++
помогите пожалуйста написать программу!!! В строке имеются только две одинаковые буквы.Найти их.
Нерекурсивные функции (сумма делителей для натурального числа) C++
Разработать функцию, которая для заданного натурального числа N возвращает сумму его делителей. С помощью данной функции: вывести на экран только те целые числа отрезка , у которых сумма делителей...
C++ Стандарты оформления кода http://www.cyberforum.ru/cpp-beginners/thread562909.html
Здравствуйте. Где можно доходчиво прочесть по стандартам оформления кода? Желательно на русском. Ибо часто вижу, допустим, такое: GetValue getValue MyClass CMyClass char str char Str char...
C++ Функции-шаблоны Помогите пожалуйста наисать программу!! Для работы с двумерными массивами арифметических типов данных разработать шаблоны ввода и вывода массива, а также шаблон для решения основной задачи: заменить... подробнее

Показать сообщение отдельно
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
01.05.2012, 20:04
Цитата Сообщение от CEBEP Посмотреть сообщение
То что у вас есть компилятор который это проглотил меня удивило
Нет у него такого компилятора. Там просто целые складываются.


Цитата Сообщение от CEBEP Посмотреть сообщение
ну в том варианте в котором вы предложили есть ссылка на
A subtraction of two pointers is only granted to have a valid defined value for pointers to elements of the same array (or for the element just past the last in the array). For other values, the behavior depends on the system characteristics and compiler implementation.
Разумеется. Но это-то, кстати, можно предусмотреть, выделяя элементы из одного массива
Но Баба-Яга всё-равно против

Добавлено через 25 минут
Ну и чтобы показать, насколько программист может усложнить "жизнь" компилятору, посмотрим, что делает GCC4.5 в режиме оптимизации -O3
Скомпилированы следующие 3 функции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
bool F1(bool b, int* left, int* right)
{
  int* p1 = b ? left : right;
  int* p2 = b ? right : left;
  return p1 > p2;
}
 
bool F2(bool b, int* left, int* right)
{
  int* p1 = b ? left : right;
  int* p2 = left + (right - p1);
  return p1 > p2;
}
 
bool F3(bool b, int* left, int* right)
{
  int* p1 = right;
  int* p2 = left;
  if (b)
  {
    p1 = left;
    p2 = right;
  }
  return p1 > p2;
}
Первая породила такой код:
Assembler
1
2
3
4
5
6
7
8
9
    .cfi_startproc
    testb   %dil, %dil
    movq    %rsi, %rax
    cmove   %rdx, %rax
    cmovne  %rdx, %rsi
    cmpq    %rsi, %rax
    seta    %al
    ret
    .cfi_endproc
Ну, в общем, что просили, то и получили.

Из второй вышло такое:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    .cfi_startproc
    xorl    %eax, %eax
    testb   %dil, %dil
    je  .L5
    movq    %rdx, %rax
    movq    %rsi, %rdx
    subq    %rsi, %rax
    andq    $-4, %rax
.L5:
    addq    %rax, %rsi
    cmpq    %rsi, %rdx
    seta    %al
    ret
    .cfi_endproc
Разве стало эффективнее? В прошлый раз были условные пересылки, но не было ветвления. Здесь же увы, условный переход.

Третий код оказался идентичным первому.
Assembler
1
2
3
4
5
6
7
8
9
    .cfi_startproc
    testb   %dil, %dil
    movq    %rsi, %rax
    cmovne  %rdx, %rax
    cmove   %rdx, %rsi
    cmpq    %rax, %rsi
    seta    %al
    ret
    .cfi_endproc
Вариант Toshkarik даёт тоже точно такой код.
Выбирайте

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