Stopky - prosba o kontrolu schema

No já bych řek že 32b proměná je 4x8b tzn, nemůžeš dát posun o 30 míst, to by muselo jít přeš 4 registry a nebo pam. místa. Tak proto to nejde podle mě.

uint32_t temp; temp=0; temp |= (1<<30);
Nejde, protože konstanta “1” je typu int.
Je třeba ji přetypovat na long.

uint32_t temp; temp=0; temp |= (1UL<<30);

Diky, funguje to. To by me nikdy nenapadlo. Pretypovani promennych ano, ale pretypovani konstant…
Ja jsem se to snazil najit, ale tohleto je proste takovy spek, ktery zkuseny programator ma v malicku, ale my amateri…

Celočíselná konstanta bude mít první typ do kterého se vejde:
int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t.

Číslo 1 v příkladu bude typu int16_t.

0000000000000001

Takže pokud ho šiftneme doleva o víc než 15 míst, dostaneme nulu.