Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Sprawdzanie rozmiaru dynamicznej tablicy int

Ostatnio zmodyfikowano 2015-03-13 16:04
Autor Wiadomość
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.
P-128239
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 ;)
P-128241
maly
» 2015-03-13 12:46:51
Nie jest.
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
P-128243
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 constexpr
C/C++
constexpr int n = 1 + 2 + 3; //OK
constexpr int n = wczytaj_z_klawiatury(); //ERROR
P-128244
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ć). :)
P-128246
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:
C/C++
const int n = wczytaj_rozmiar();
int tab[ n ];

P-128247
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).
P-128248
Lora
» 2015-03-13 14:35:28
Czyli to też jest niezgodne ze standardem?
P-128249
1 2 3 « 4 » 5
Poprzednia strona Strona 4 z 5 Następna strona