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

Как по-русски обозвать целиком эту конструкцию? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создание шаблона двунаправленного списка класс List http://www.cyberforum.ru/cpp-beginners/thread584026.html
пожалуйста помогите решить задачку, позникли небольшие проблемы с ней.. 3. Создание шаблона двунаправленного списка класс List. а. добавления узла перед заданным элементом; b. удаления всех заданных элементов; c. сортировка элементов меняя узлы. d. добавления узла после заданного элемента.
C++ Попадает ли точка с заданными координатамив заштрихованную область 1 Задание(по рисунку): 1. Определить, попадает ли точка с заданными координатами (x, y) в заштрихо-ванную область ). 2. Разработать алгоритм задачи и отобразить его по ГОСТ 19.701 – 90. Коорди-наты x, y запросить функцией scanf(). Условие попадания точки в заштрихованную область записать одним предложением . 3. Выполнить программу в режиме отладки по шагам с просмотром перехода на ветви «Да»... http://www.cyberforum.ru/cpp-beginners/thread583880.html
Кодировка C++
Мне нужно, чтобы консольная программа закрывалась после ввода определённой строки.Так вот на английском всё прекрасно работает при вводе "Exit", а на русском, конечно же, нет.Что с кодировкой сделать?Помогите ламеру! setlocale(LC_CTYPE,"Russian"); string s; while (1) { getline(cin,s); if (s.compare("Выйти")==0 || s.compare("Exit")==0) break; cout << s << "\n\n"; }
C++ Сортировка std::map по значению
имеется вот такой вот тип: typedef struct { char domain; set<uint32_t> unique_ip; set<uint32_t> unique_id; } REF_LOG; и map содержащий этот тип:
C++ Программа считалка на с++ http://www.cyberforum.ru/cpp-beginners/thread583858.html
Задача. В круге стоят N человек. Они пронумерованы от 1 до N. Поочередно из круга начинает выходить каждый третий человек. Это продолжается до тех пор, пока в круге не останется последний человек. Определить его номер. Составьте пожалуйста код на с++ дев
C++ Подсчитать среднее арифметическое ненулевых элементов матрицы, расположенных над побочной диагональю Дан массив размером n x n (если не оговорено иначе),элементы которого целые числа. Подсчитать среднее арифметическое ненулевых элементов,расположенных над побочной диагональю. Девушка это уже четвертая тема от Вас с названием "С++". Я уже устал переименовывать. Учтите модераторы могут быть и злыми :) подробнее

Показать сообщение отдельно
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
23.05.2012, 18:39     Как по-русски обозвать целиком эту конструкцию?
Цитата Сообщение от taras atavin Посмотреть сообщение
Даже если не учитывать загрузку лишнего операнда, либо необходимость занять один лишний регистр, сравнение с нолём само по себе быстрей.
1. Что за лишний операнд? Почему ты так уверен в том, что сгенерирован код с использованием test? А ведь этот оператор вызван быть не может, т.к. уловие >=, а не =, поэтому в любом случае будет использовано обычное сравнение. Возможно, что вместо загрузки константы 0 будет использовано xor регистра.
2. соответственно и лишнего регистра нет, т.к. даже 0 придётся загружать в регистр
3. С какой стати сравнение с нулём быстрее?

Цитата Сообщение от taras atavin Посмотреть сообщение
И тролят здесь меня
Потому я и сказал "продолжаем толстый троллинг". Ну нельзя твой вопрос воспринимать всерьёз. И ответить не стебаясь невозможно в принципе.


Цитата Сообщение от taras atavin Посмотреть сообщение
А в случае факториала
Щяс вообще поржём и потроллим знатно.
Привожу два листинга. Код на С++, и сгенерированный ассемблерный код. Я там выделю интересные моменты вот так ****************

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
26
27
28
29
30
31
32
33
34
__declspec(noinline) int factorial(unsigned int i)
{
    int r=1;
    for (; i>0; --i)
    {
        r*=i;
    }
    return r;
}
 
__declspec(noinline) int factorial2(unsigned int i)
{
    int r=1;
    for (int x = 1; x <= i; ++x)
    {
        r*=x;
    }
    return r;
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
 
    int f1 = factorial( 10 );
 
    std::cout << f1 << std::endl;
    
    
    int f2 = factorial2(10);
    std::cout << f2 << std::endl;
 
    return 0;
}
Assembler
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
; Listing generated by Microsoft (R) Optimizing Compiler Version 16.00.40219.01 
 
    TITLE   T:\r\r\r.cpp
    .686P
    .XMM
    include listing.inc
    .model  flat
 
INCLUDELIB OLDNAMES
 
EXTRN   @__security_check_cookie@4:PROC
EXTRN   __imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z:PROC
EXTRN   __imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z:PROC
EXTRN   __imp_?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z:PROC
EXTRN   __imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A:BYTE
PUBLIC  ?factorial2@@YAHI@Z             ; factorial2
; Function compile flags: /Ogtp
; File t:\r\r\r.cpp
;   COMDAT ?factorial2@@YAHI@Z
_TEXT   SEGMENT
?factorial2@@YAHI@Z PROC                ; factorial2, COMDAT
 
; 20   :    int r=1;
; 21   :    for (int x = 1; x <= i; ++x)
; 22   :    {
; 23   :        r*=x;
; 24   :    }
; 25   :    return r;
 
;***************************************************************************************************
;  Вот это весь код, который описывает реализацию факториала с инкрементом
;  Компилятору хватило мозгов всё вычислить в compile-tme
;  Всего дона операция - помещение результата в регистр EAX
    mov eax, 3628800                ; 00375f00H
;***************************************************************************************************
; 26   : }
 
    ret 0
?factorial2@@YAHI@Z ENDP                ; factorial2
_TEXT   ENDS
PUBLIC  ?factorial@@YAHI@Z              ; factorial
; Function compile flags: /Ogtp
;   COMDAT ?factorial@@YAHI@Z
_TEXT   SEGMENT
?factorial@@YAHI@Z PROC                 ; factorial, COMDAT
 
; 9    : {
 
; **************************************************************************************************
;  Код с декрементом.
;  Суммарно 22 операции
    mov ecx, 10                 ; 0000000aH
 
; 10   :    int r=1;
 
    mov eax, 1
    npad    6
$LL3@factorial:
 
; 11   :    for (; i>0; --i)
; 12   :    {
; 13   :        r*=i;
 
    imul    eax, ecx
    dec ecx
    jne SHORT $LL3@factorial
;****************************************************************************************************
; 14   :    }
; 15   :    return r;
; 16   : }
 
    ret 0
?factorial@@YAHI@Z ENDP                 ; factorial
_TEXT   ENDS
PUBLIC  _wmain
; Function compile flags: /Ogtp
;   COMDAT _wmain
_TEXT   SEGMENT
_argc$ = 8                      ; size = 4
_argv$ = 12                     ; size = 4
_wmain  PROC                        ; COMDAT
 
; 31   : 
; 32   :    int f1 = factorial( 10 );
; 33   : 
; 34   :    std::cout << f1 << std::endl;
 
    mov eax, DWORD PTR __imp_?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z
    push    eax
    call    ?factorial@@YAHI@Z          ; factorial
    mov ecx, DWORD PTR __imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A
    push    eax
    call    DWORD PTR __imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z
    mov ecx, eax
    call    DWORD PTR __imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z
 
; 35   :    
; 36   :    
; 37   :    int f2 = factorial2(10);
; 38   :    std::cout << f2 << std::endl;
 
    mov ecx, DWORD PTR __imp_?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z
    push    ecx
    call    ?factorial2@@YAHI@Z         ; factorial2
    mov ecx, DWORD PTR __imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A
    push    eax
    call    DWORD PTR __imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z
    mov ecx, eax
    call    DWORD PTR __imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z
 
; 39   : 
; 40   :    return 0;
 
    xor eax, eax
 
; 41   : }
 
    ret 0
_wmain  ENDP
_TEXT   ENDS
END
Как говорится, не пытайтесь перехитрить компилятор.
 
Текущее время: 05:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru