Sprawdzanie rozmiaru dynamicznej tablicy int
Ostatnio zmodyfikowano 2015-03-13 16:04
Brunon3 |
» 2015-03-13 07:28:36 No ale przecież jeżeli nie da się czegoś zmienić (niezmienna) to to coś jest stałe. ;)
Po za tym we wszystkich kursach jakie czytałem/oglądałem było to nazwane "stała". :)
Co do tego, czy stała musi być znana w trakcie kompilacji nie mam pewności, tu chyba rzeczywiście trzeba poczekać na eksperta. :)
-BD. |
|
akwes |
» 2015-03-13 10:58:29 @maly, Nie wiem czy to jest zgodne ze standardem C++ ale każdy używany przezemnie kompilator zmieni waszą 'stałą'.
|
Nie jest. Tego rzutowania wolno używać wyłącznie do zmiennych, które pierwotnie nie były const. Wiele rzeczy można zrobić w C++ co nie znaczy, że są one ani prawidłowe ani mądre ;) |
|
maly |
» 2015-03-13 12:46:51 No i dobrze wiedzieć że niezmienna jest naprawdę niezmienną;) Wiele rzeczy można zrobić w C++... |
To właśnie zaczyna mnie w C++ trochę denerwować. ...co nie znaczy, że są one ani prawidłowe ani mądre ;) |
Żeby niebyło że coś takiego robię, ale jeśli widzę że podstawowe kompilatory dają spodziewane efekty to zakładam że jest to prawidłowe. //EDIT @Monika nazywanie zmiennych z atrybutem const stałymi jest poprawne |
'Stała' jest ściśle określoną niezmienną wartością, jeśli można przypisać jakąkolwiek wartość wtedy nie można jej nazywać 'stałą', heh;) Niech ktoś zamknie ten wątek bo będę to dalej pisał te głupoty xD |
|
Monika90 |
» 2015-03-13 13:33:15 Brunon, nazywanie zmiennych z atrybutem const stałymi jest poprawne. (no chyba że to jest const volatile, to wtedy już sama nie wiem) Wartość takiej stałej nie musi być znana w czasie kompilacji, forumowicz Lora podał przykład. Ale jeśli jej wartość nie jest znana w czasie kompilacji, to nie można jej użyć do zdefiniowania niedynamicznej tablicy. Choć jest wielce prawdopodobne, że w przyszłej wersji standardowego C++ będzie można. W C++ występuje również rodzaj stałej, której wartość musi być znana już w czasie kompilacji, używa się do tego słowa constexprconstexpr int n = 1 + 2 + 3; constexpr int n = wczytaj_z_klawiatury();
|
|
Brunon3 |
» 2015-03-13 14:07:32 W C++ występuje również rodzaj stałej, której wartość musi być znana już w czasie kompilacji, używa się do tego słowa constexpr |
Wiem że takie coś jest, czytałem artykuł o C++11. ;) Ale nie wiedziałem, że jest to również do stałych (tam było napisane że w funkcjach/metodach). :) Niech ktoś zamknie ten wątek bo będę to dalej pisał te głupoty xD |
Mi się ten offtop całkiem podoba i jak dla mnie nie trzeba jeszcze go zamykać (ktoś może jeszcze coś dodać). :) |
|
Lora |
» 2015-03-13 14:22:32 Ale jeśli jej wartość nie jest znana w czasie kompilacji, to nie można jej użyć do zdefiniowania niedynamicznej tablicy.
|
Mi coś takiego działa: const int n = wczytaj_rozmiar(); int tab[ n ];
|
|
maly |
» 2015-03-13 14:30:55 Bo pewnie zadziałało by nawet bez const, a to oznacza że Twój kompilator obsługuje VLA(Variable length arrays). |
|
Lora |
» 2015-03-13 14:35:28 Czyli to też jest niezgodne ze standardem? |
|
1 2 3 « 4 » 5 |