mokrowski napisał(a):
Mirek, być może źle zrozumiałem Twoją wypowiedź, ale nie zgadzam się co do jednego.
To może ja inaczej powiem, ale tzn dopytam bo może ja nie wiem ...
przykładowy kod:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
jaka liczba się wyświetli na LCD gdy a dojdzie do wartości (teoretycznie wg nas) do 32768 ?
zakładając, że lcd_int() zbudowana jest mniej więcej tak:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Wg tego co pisałem wyżej oczywistym (tzn dla mnie oczywistym jest), że wyświetli się -32768
I teraz uwaga - ja myślę i mówię tylko w kategoriach AVR GCC więc absolutnie nie twierdzę, że to dotyczy wszystkich innych kompilatorów bo po prostu nie wiem, a jak nie wiem to nie będę się mądrzył

Jednak na podstawie tak prostej analogii wydaje mi się (hmmm wydawało mi się), że każdy kompilator tak się zachowa w tym opisanym teraz wyżej przeze mnie przypadku.
dlatego proszę potwierdź/rozwiej moje wątpliwości ok ?
Naturalnie zgadzam się, że trzeba ZAWSZE pilnować typów ale nie spodziewałbym się wręcz, że kompilator będzie robił mi w przypadku powyżej psikusa i pokaże liczbę dodatnią ? .... Przy czym wyświetlanie to pal pies ... gorzej gdyby w warunkach jakichś np if() miało to się tak rąbać ...
stąd ciekaw też jestem jak to się ostatecznie zachowuje w kompilatorze u Antystatycznego teraz ?
mokrowski napisał(a):
No bo co się może dziać jeśli INT będzie indeksem? Po osiągnięciu 32767, skoczy na wartość ujemną która będzie poza tablicą.
I jeszcze jedno - może rzeczywiście zrobiłem skrót myślowy i pisząc, że nie trzeba pilnować typów nawet przez myśl mi nie przeszło, żeby w takiej sytuacji nie pilnować

.... Podałem wyżej przykład - chodziło mi o pilnowanie w takich prostych przykładach porównania - i ciekaw jestem czy zgadłem , że np u Antystatycznego ta liczba dodatnia pojawiała się dlatego że u niego np lcd_int() wyglądał tak:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Bo chyba to oczywiste, że w takim wypadku to normalne że zobaczymy 32768 po przekroczeniu zmiennej counter (z pierwszego przykładu) a nie -32768
------------------------ [ Dodano po: 1 minucie ]mokrowski napisał(a):
Notacja U2 (z uzupełnieniem do 2), tak opracowano by operacje ze znakami (+/-...), kończyły się bezpiecznie ,,w objętości danego typu".
O! mi chodziło bardziej o to właśnie

że pod tym względem nie trzeba pilnować