powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / C++ [игнор отключен] [закрыт для гостей] / выполнить пример с инкрементом не на компиляторе MS ++
24 сообщений из 49, страница 2 из 2
выполнить пример с инкрементом не на компиляторе MS ++
    #39728099
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
видимо всё дело в этом:автор"sequenced-before" is an asymmetric, transitive, pair-wise relationship between evaluations within the same thread.
т.е. выставлять порядок это усложнение
надо руками
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #39728100
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingizэто попользовать? чтобы увидеть другой результат?

Никак, обломись.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #39728102
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухвидимо всё дело в этом:автор"sequenced-before" is an asymmetric, transitive, pair-wise relationship between evaluations within the same thread.
т.е. выставлять порядок это усложнение
надо руками
и это правильно, т.к. у нас может быть 1+2+3, где порядок нафиг не нужен
а мб: 1-2+3, где порядок важен
тоже самое f1()+f2()+f3() - сами функции возвращают UB (могут отдать +, а могут -), так что это именно нам решать про порядок
C++ всё делает правильно.
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #39728114
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудуху нас может быть 1+2+3, где порядок нафиг не нужен
а мб: 1-2+3, где порядок важен
А если 1+(-2)+3 то какова важность порядка?
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #39728129
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, такая же, имхо

кстати, в пхп ещё такое есть:
авторAND is not the same like &&

for example:

<?php $a && $b || $c; ?>
is not the same like
<?php $a AND $b || $c; ?>

the first thing is
(a and b) or c

the second
a and (b or c)

'cause || has got a higher priority than and, but less than &&

of course, using always [ && and || ] or [ AND and OR ] would be okay, but than you should at least respect the following:

<?php $a = $b && $c; ?>
<?php $a = $b AND $c; ?>

the first code will set $a to the result of the comparison $b with $c, both have to be true, while the second code line will set $a like $b and THAN - after that - compare the success of this with the value of $c
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #39728166
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, там имеется ввиду, что 1 - (2+3) != (1 - 2) +3
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #39728192
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухкстати, в пхп ещё такое есть:
ИМХО PHP проектировали знатные извращенцы.

Логическое И, оно же AND, оно же &&, оно же логическое умножение.
Логическое ИЛИ, оно же OR, оно же ||, оно же логическое сложение.
А дальше обычно так же как учили в третьем классе: сначала умножение, затем сложение.
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #39728199
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИМХО PHP проектировали знатные извращенцы.
евреи
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #39728243
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИМХО PHP проектировали знатные извращенцы.PHP не проектировали. Он просто возник как набор скриптов на Перле для своего персонального сайта и допиливался по мере необходимости. Перл, кстати, тоже не проектировали - оно само получилось.
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #39728284
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingiz,

порядок вызовов функций в С недетерминирован.

просто хотя бы потому, что оптимизатором вызовы могут быть (и будут в 90% простых случаев) выкинуты совсем
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #39728303
Фотография конечно Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingizэто попользовать? чтобы увидеть другой результат?
автор/Gd использовать соглашение о вызовах __cdecl
/Gr использовать соглашение о вызовах __fastcall
/Gz использовать соглашение о вызовах __stdcall


А есть IDE свободное для c у MS?
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #39728934
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
конечно Вася,

всякие экпресс и коммунити едишны
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #39729003
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglпорядок вызовов функций в С недетерминирован.

просто хотя бы потому, что оптимизатором вызовы могут быть (и будут в 90% простых случаев) выкинуты совсем
Даже при сборке в дебаге небольшое оптимизаторство есть
Код: plaintext
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.
	int i = 0;
009D5B8A  mov         dword ptr [i],0  
	i = i + f(i);
009D5B91  lea         eax,[i]  
009D5B94  push        eax  
009D5B95  call        f (09D1555h)  
009D5B9A  add         esp,4  
009D5B9D  add         eax,dword ptr [i]  
009D5BA0  mov         dword ptr [i],eax  
	std::cout << i << "\n";
009D5BA3  push        offset string "\n" (09DDD00h)  
009D5BA8  mov         esi,esp  
009D5BAA  mov         eax,dword ptr [i]  
009D5BAD  push        eax  
009D5BAE  mov         ecx,dword ptr [_imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A (09E10E4h)]  
009D5BB4  call        dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (09E10DCh)]  
009D5BBA  cmp         esi,esp  
009D5BBC  call        __RTC_CheckEsp (09D1415h)  
009D5BC1  push        eax  
009D5BC2  call        std::operator<<<std::char_traits<char> > (09D1343h)  
009D5BC7  add         esp,8  

	i = 0;
009D5BCA  mov         dword ptr [i],0  
	i = f(i) + i;
009D5BD1  lea         eax,[i]  
009D5BD4  push        eax  
009D5BD5  call        f (09D1555h)  
009D5BDA  add         esp,4  
009D5BDD  add         eax,dword ptr [i]  
009D5BE0  mov         dword ptr [i],eax  
	std::cout << i;	return 0;

...
Рейтинг: 0 / 0
Период между сообщениями больше года.
выполнить пример с инкрементом не на компиляторе MS ++
    #40109908
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это нормально, что на примере
Код: plaintext
1.
2.
3.
  int s = 0;
  s = s++;
  cout << s;



g++ выдает 0,
а ms 19 года выдает 1?
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #40109910
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingiz
это нормально, что на примере
Код: plaintext
1.
2.
3.
  int s = 0;
  s = s++;
  cout << s;




g++ выдает 0,
а ms 19 года выдает 1?
неопределенное поведение:
авторBecause of the side-effects involved, built-in increment and decrement operators must be used with care to avoid undefined behavior due to violations of sequencing rules.
так что просто не надо такой код писать.
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #40109912
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaN

так что просто не надо такой код писать.

это я догадываюсь.
Я полазил по ссылкам Зива
нашел авторi = i++ + 1; // undefined behavior
мой пример проще, решил переспросить.
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #40109914
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, ссылки Сибирякова
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #40109929
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tchingiz
это нормально, что на примере
Код: plaintext
1.
2.
3.
  int s = 0;
  s = s++;
  cout << s;



g++ выдает 0,
а ms 19 года выдает 1?
Какой используется стандарт ты нам, конечно, не скажешь.
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #40109930
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ZyK_BotaN
tchingiz
это нормально, что на примере
Код: plaintext
1.
2.
3.
  int s = 0;
  s = s++;
  cout << s;




g++ выдает 0,
а ms 19 года выдает 1?
неопределенное поведение
В C++17+ определённое.
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #40110167
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guest
tchingiz
это нормально, что на примере
Код: plaintext
1.
2.
3.
  int s = 0;
  s = s++;
  cout << s;



g++ выдает 0,
а ms 19 года выдает 1?
Какой используется стандарт ты нам, конечно, не скажешь.



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
#include <iostream> 
using namespace std; 
int main() {
    int s = 0;
    s = s++;
    cout<<s<<'\n'<< __cplusplus;
    return 0;
}


Код: plaintext
1.
2.
0
201703

https://overcoder.net/q/135824/предопределенный-макрос-c-11

g++ (GCC) 11.1.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #40110195
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tchingiz
201703
Ну так значит 0 вполне гарантирован.
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #40110211
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaN
tchingiz
это нормально, что на примере
Код: plaintext
1.
2.
3.
  int s = 0;
  s = s++;
  cout << s;




g++ выдает 0,
а ms 19 года выдает 1?
неопределенное поведение:

Ваше слово, товарищ маузер!
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #40110294
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingizВаше слово, товарищ маузер!

"ms 19-го года" не поддерживает стандарт С++17. Сурпрайз?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
выполнить пример с инкрементом не на компиляторе MS ++
    #40110910
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

tchingizВаше слово, товарищ маузер!

"ms 19-го года" не поддерживает стандарт С++17. Сурпрайз?..

последние 25 лет мне кажется, что когда ms шото поддерживает, то это странно и подозрительно
...
Рейтинг: 0 / 0
24 сообщений из 49, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / выполнить пример с инкрементом не на компиляторе MS ++
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]