-
21. Data: 2019-01-14 17:42:52
Temat: Re: Stroustrup o C++
Od: AK <n...@n...net>
On 2019-01-14 16:33, Wojciech Muła wrote:
> On Monday, January 14, 2019 at 10:07:01 AM UTC+1, AK wrote:
>> On 2019-01-14 09:37, Wojciech Muła wrote:
>>> On Sunday, January 13, 2019 at 5:34:26 PM UTC+1, AK wrote:
>>>> Przy deklaracji tablic wymagane jest const_expr (ktore jest
>>>> podsetem expr) i wszytsko gra.
>>>> _Nic_ nie stoi na przeszkodzie, aby dla sizeof tez bylo
>>>> subexpr (nie dopuszczajace operatorow pre-in-fixowych).
>>>
>>> Nie rozumiem w czym te operatory przeszkadzają.
>>
>> No bez jaj. Przeszkadzaja, gdyz tak wlasciwie nie dzialaja
>> w sizeof, a jedynie wprowadzaja w blad/konfuzje (8 zamiast 9)
>> developerow.
>
> "... developerów, którzy nie rozumieją jak działa sizeof/decltype/etc."
Bo trudno zrozumiec idiotyzm tego sizeofowego wyjatku.
> Jeśli ktoś nie rozumie, że sizeof bierze **typ wyrażenia**
> bez liczenia go, to trudno mieć pretensje do języka.
Mozna, zwlaszcza ze (jak pokazalem) mozna go _bardzo latwo_ uniknac
przez gramatyke.
Bo ++ (-- itp) w sizeof nie maja _najmniejszego sensu_.
Dlatego powinny byc zwyczajnie zabronione.
> O ile> w C to jeszcze Twoja propozycja miałaby sens, to w C++ jest
> nie do zaakceptowania, bo można przeciążać operatory. Wyrażenie
> "x++" może mieć inny typ niż samo "x".
Tak?. No cos podobnego!?
Bo mi sie zawsze wydawalo, ze taki ++ to posiada obligatoryjne
sygnatury:
Klasa& Klasa::operator++(); // dla ++x
Klasa Klasa::operator++(); // dla x++
AK
-
22. Data: 2019-01-14 17:48:22
Temat: Re: Stroustrup o C++
Od: AK <n...@n...net>
On 2019-01-14 17:42, AK wrote:
> Klasa Klasa::operator++(); // dla x++
oczywiscie:
Klasa Klasa::operator++(int); // dla x++
-
23. Data: 2019-01-14 19:53:29
Temat: Re: Stroustrup o C++
Od: Wojciech Muła <w...@g...com>
On Monday, January 14, 2019 at 5:42:54 PM UTC+1, AK wrote:
> > O ile> w C to jeszcze Twoja propozycja miałaby sens, to w C++ jest
> > nie do zaakceptowania, bo można przeciążać operatory. Wyrażenie
> > "x++" może mieć inny typ niż samo "x".
>
> Tak?. No cos podobnego!?
> Bo mi sie zawsze wydawalo, ze taki ++ to posiada obligatoryjne
> sygnatury:
> Klasa& Klasa::operator++(); // dla ++x
> Klasa Klasa::operator++(); // dla x++
Ciekawa kwestia. W sumie się nad tym nie zastanawiałem, ostatni
raz przeciążałem ten operator 10 lat temu, takiż on wybitnie
przydatny. :)
GCC/clang/ICC/MSVC nie protestują:
---test.cpp---
#include <cstdio>
struct X {
int operator++(int) {
return 42;
}
int x;
int y;
int z;
};
int main() {
X x;
printf("%d %d\n", sizeof(x), sizeof(x++));
}
---eof---
Na moim systemie dostaję "12 4".
w.
-
24. Data: 2019-01-15 15:02:36
Temat: Re: Stroustrup o C++
Od: AK <n...@n...net>
On 2019-01-14 19:53, Wojciech Muła wrote:
> On Monday, January 14, 2019 at 5:42:54 PM UTC+1, AK wrote:
>>> O ile> w C to jeszcze Twoja propozycja miałaby sens, to w C++ jest
>>> nie do zaakceptowania, bo można przeciążać operatory. Wyrażenie
>>> "x++" może mieć inny typ niż samo "x".
>>
>> Tak?. No cos podobnego!?
>> Bo mi sie zawsze wydawalo, ze taki ++ to posiada obligatoryjne
>> sygnatury:
>> Klasa& Klasa::operator++(); // dla ++x
>> Klasa Klasa::operator++(); // dla x++
>
> Ciekawa kwestia. W sumie się nad tym nie zastanawiałem, ostatni
> raz przeciążałem ten operator 10 lat temu, takiż on wybitnie
> przydatny. :)
No.. Nie powiedzial bym. Raczej najczesciej przeciazany.
Kazdy byle iterator przeciaza zwykle ++,
a tych jednak sie troche pisze (jakis rekordsety czy inne sekwencje).
> GCC/clang/ICC/MSVC nie protestują:
No to zle robia (jak to zwykle w C/C++:).
Fakt ze, wiele jest dziur/niedomowien zarowno w raporcie
jak i w kompilatorach.
Heh, nawet glupi preprocesor sprawia pewne problemy.
np.
#else
czy
#endif
w/g standardu/gramatyki C/C99 nie moze byc:
# else jakies tokeny
czy
# endif jakies tokeny
a kompilatory swoje - dopuszczaja (fakt, ze chociaz ostatnie
VC++ daja warninga).
AK
-
25. Data: 2019-01-15 22:56:08
Temat: Re: Stroustrup o C++
Od: Wojciech Muła <w...@g...com>
On Tuesday, January 15, 2019 at 3:02:40 PM UTC+1, AK wrote:
> > GCC/clang/ICC/MSVC nie protestują:
>
> No to zle robia (jak to zwykle w C/C++:).
> Fakt ze, wiele jest dziur/niedomowien zarowno w raporcie
> jak i w kompilatorach.
Z ciekawości zajrzałem do najnowszego drafta C++ i wychodzi
na to, że nie definiuje zwracanego typu z operatorów post-/
prefiksowych. Czyli kompilatory spełniają standard.
Osobna kwestia czy takie ograniczenie miałoby sens.
w.
-
26. Data: 2019-01-16 00:36:39
Temat: Re: Stroustrup o C++
Od: AK <n...@n...net>
On 2019-01-15 22:56, Wojciech Muła wrote:
> On Tuesday, January 15, 2019 at 3:02:40 PM UTC+1, AK wrote:
>>> GCC/clang/ICC/MSVC nie protestują:
>>
>> No to zle robia (jak to zwykle w C/C++:).
>> Fakt ze, wiele jest dziur/niedomowien zarowno w raporcie
>> jak i w kompilatorach.
>
> Z ciekawości zajrzałem do najnowszego drafta C++ i wychodzi
> na to, że nie definiuje zwracanego typu z operatorów post-/
> prefiksowych. Czyli kompilatory spełniają standard.
Mowilem o niespojnosciach/niedopowiedzeniach.
Kazda porzadniejsza ksiazka do C++ definiuje te operatory tak
jak je podalem.
> Osobna kwestia czy takie ograniczenie miałoby sens.
IMHO mialoby.
AK
-
27. Data: 2019-01-18 13:50:34
Temat: Re: Stroustrup o C++
Od: q...@t...no1 (Queequeg)
s...@g...com wrote:
> x == 9; y == 4;
> Co w tym tajemniczego?!?
Sprawdziłeś?
--
https://www.youtube.com/watch?v=9lSzL1DqQn0
-
28. Data: 2019-01-18 14:05:16
Temat: Re: Stroustrup o C++
Od: q...@t...no1 (Queequeg)
AK <n...@n...net> wrote:
> Jednak kazdy Ci powie, ze Mercedes (choc nie idealny, A-iles_tam
> sie przewracal:), jest jednak lepszy od jakiegos Tico.
Zależy w jakich kategoriach go oceniasz. Jeśli szukasz samochodu, który
będzie tani (w zakupie i w eksploatacji), to 10-letnie, małolitrażowe Tico
będzie lepsze od wypasionego Mercedesa.
Wybór między Mercedesem i Tico to sztuka kompromisu tak samo, jak wybór
języka programowania.
> Podobnie z j.prog. Nnie ma idealnych, ale sa (niekiedy zdecydowanie)
> lepsze i (niekiedy zdecydowanie) gorsze.
Wg mnie, jeśli poruszamy się wśród "mainstreamowych" języków, to zależy to
głównie od konkretnego zastosowania.
Gdy musiałem zrobić webserwis, to mimo zerowego doświadczenia z C#
wybrałem właśnie ten język, zamiast trzymać się C++, w którym piszę
najwięcej.
--
https://www.youtube.com/watch?v=9lSzL1DqQn0
-
29. Data: 2019-01-18 16:45:32
Temat: Re: Stroustrup o C++
Od: q...@t...no1 (Queequeg)
AK <n...@n...net> wrote:
> int x = 8;
> int y = sizeof(x++);
> // no wiec ile w tym miejscu wynosi sobie x ?
Zadałem to pytanie na ryjbuku:
http://tinypic.com/view.php?pic=15gblsw&s=9
I dostałem odpowiedź od pewnej dobrze zapowiadającej się przyszłej
programistki, że:
- sizeof() jest funkcją, która nie ma ciała
- w argumencie funkcji nie może być x++
- x++ to to samo, co x=x+1
- takich operacji nie robi się w argumencie
Taki jest poziom polskiej edukacji.
http://tinypic.com/view.php?pic=2mx037b&s=9
--
https://www.youtube.com/watch?v=9lSzL1DqQn0
-
30. Data: 2019-01-19 00:59:58
Temat: Re: Stroustrup o C++
Od: Wojciech Muła <w...@g...com>
On Friday, January 18, 2019 at 4:45:34 PM UTC+1, Queequeg wrote:
> AK <n...@n...net> wrote:
>
> > int x = 8;
> > int y = sizeof(x++);
> > // no wiec ile w tym miejscu wynosi sobie x ?
>
> Zadałem to pytanie na ryjbuku:
>
> http://tinypic.com/view.php?pic=15gblsw&s=9
>
> I dostałem odpowiedź od pewnej dobrze zapowiadającej się przyszłej
> programistki, że:
>
> - sizeof() jest funkcją, która nie ma ciała
> - w argumencie funkcji nie może być x++
> - x++ to to samo, co x=x+1
> - takich operacji nie robi się w argumencie
>
> Taki jest poziom polskiej edukacji.
>
> http://tinypic.com/view.php?pic=2mx037b&s=9
Akurat unikanie post- i pre-inkrementacji w argumentach
funkcji to dobra praktyka, poprawia czytelność.
w.