Byla vydána nová verze 19 integrovaného vývojového prostředí (IDE) Qt Creator. Podrobný přehled novinek v changelogu.
Bitwig Studio (Wikipedie) bylo vydáno ve verzi 6. Jedná se o proprietární multiplatformní (macOS, Windows, Linux) digitální pracovní stanici pro práci s audiem (DAW).
Společnost Igalia představila novou linuxovou distribuci (framework) s názvem Moonforge. Jedná se o distribuci určenou pro vestavěné systémy. Vychází z projektů Yocto a OpenEmbedded.
Google Chrome 146 byl prohlášen za stabilní. Nejnovější stabilní verze 146.0.7680.71 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 29 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
D7VK byl vydán ve verzi 1.5. Jedná se o fork DXVK implementující překlad volání Direct3D 3 (novinka), 5, 6 a 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.
Bylo vydáno Eclipse IDE 2026-03 aneb Eclipse 4.39. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.
Ze systému Slavia pojišťovny uniklo přibližně 150 gigabajtů citlivých dat. Jedná se například o pojistné dokumenty, lékařské záznamy nebo přímou komunikaci s klienty. Za únik může chyba dodavatelské společnosti.
Sněmovna propustila do dalšího kola projednávání vládní návrh zákona o digitální ekonomice, který má přinést bezpečnější on-line prostředí. Reaguje na evropské nařízení DSA o digitálních službách a upravuje třeba pravidla pro on-line tržiště nebo sociální sítě a má i víc chránit děti.
Meta převezme sociální síť pro umělou inteligenci (AI) Moltbook. Tvůrci Moltbooku – Matt Schlicht a Ben Parr – se díky dohodě stanou součástí Meta Superintelligence Labs (MSL). Meta MSL založila s cílem sjednotit své aktivity na poli AI a vyvinout takovou umělou inteligenci, která překoná lidské schopnosti v mnoha oblastech. Fungovat by měla ne jako centralizovaný nástroj, ale jako osobní asistent pro každého uživatele.
Byla vydána betaverze Fedora Linuxu 44 (ChangeSet), tj. poslední zastávka před vydáním finální verze, která je naplánována na úterý 14. dubna.
using namespace std;
int main()
{
int n = 7;
int *slova2 = new int[n];
slova2[0] += 23;
slova2[0] += 32;
cout << slova2[0] << endl;
return 0;
}
na vystupu vyhodi pokazde random cislo? Treba tohle: 6230608
Řešení dotazu:
main() operátorem +=.
Premenne v C su defaultne neinicialovane
Jen pro pořádek: tohle není C. Takže přesnější vysvětlení je, že typ int nemá defaultní konstruktor, který by hodnotu inicializoval.
Premenne v C su defaultne neinicialovane
A pro úplnost: tohle ani není obecně pravda.
A pro úplnost:
V C jsou static a „globální“ proměnné inicializované (zjednodušeně na 0).
Nic než souhlas(, nesouhlasil bych s „povinnou“ inicializací při deklaraci ;)).
Přemýšlet nad tím jinak v C(/C++) je vždy kravina, bo tam je to nebo to(, ne ‚a‘), a „auto inicializace“ v těchto specifických případech je tam tak nějak z pohledu programátora navíc.
static int i = 0;je to samé(, nebo by mělo být) co
static int i;bo „auto inicializace“ se děje jen v 2. případě.
static int i; i = 0;už může být incicializace (bez optimalizace) 2×.
static int i;Tohle tu proměnnou vytvoří vynulovanou při startu programu a pak už s ní nic nedělá.
static int i = 0;Tohle tu proměnnou nastaví ještě jednou při inicializaci statických proměnných v dané kompilační jednotce. Tedy pokud jiná statická inicializace z jiné kompilační jednotky tu hodnotu změní, tohle ji může a nemusí přepsat (protože pořadí statických inicializací mezi kompilačními jednotkami není definované). To první se využívá u nifty counteru.
Tedy pokud jiná statická inicializace z jiné kompilační jednotky tu hodnotu změní
Ta proměnná je static, takže ji z jiné kompilační jednotky z definice přepsat nemůžete.
Jak?
Jsem přesvědčen, že ty zápisy jsou identické a gcc generuje identický kód.
__attribute__((constructor))).
Ale aby to nebylo tak snadné, tak konstantová inicializace se provádí jen compile-time konstantami, tj. literály či constexpry, nikoliv const proměnnými. Ten problém, co jsem měl, byl právě použití constu k inicializaci na 0 (v pre-C++11 jsem měl nullptr nadefinovaný jako const).
static se má dít v jednom kroku a buď se inicializuje na „0“, nebo na hodnotu, která je při deklaraci explicitně uvedena a const tam nehraje žádnou roli.
// inicializace promměných i=0; ... // konec inicializacepo kterém vím, že všechny proměnné musí mít hodnotu. A jak jsem říkal, ten řádek kódu navíc mi nevadil ani v dobách Fortranu, děrných štíků a mainframu s 256 kB operační paměti, natož dnes.
static a, tak máš inicializace dvě, jedna při deklaraci a druhá při tvé inicializaci. Asi to v 99% případech nevadí, ale já když to vím, tak mě to žere…
To máš pravdu. Je to síla zvyku. Ale to víš, FORTRANský programátor může psát aritmetické IF v jakémkoliv jazyce.
(A odkaz pro ty, co neví, co je artimetické IF)
Mám pocit, že moc věříš optimalizaci, která by, dle mého, mohla být nad rámec povoleného.
Zatímco s
static int j = 0; a static int j; gcc generuje identický kód, s static j; j = 0; již jiný/delší (nenamáhám se to disasemblovat, stačí fstat a md5sum).
Zkus si:
//use: gcc -O3 test.c -o test && md5sum ./test
//cygwin use: gcc -O3 test.c -o test.exe && md5sum ./test
#include <stdio.h>
#include <limits.h>
int main(){
int iii = INT_MAX;
/* 1. --- explicit --- */
static int i = 0;
/* ---------------- */
/* 2. --- implicit --- */
//static int i;
/* ---------------- */
/* 3. ---- twice ---- */
//static int i;
//i = 1;
/* ---------------- */
printf("%d",iii - i);
return 0;
}
O tom ze 3. je jine nez 1. a 2. snad nepochybuje…No a o tom to právě je, že jsou tam ty dvě inicializace, které nemohou/by neměly být při kompilaci optimalizovány, i když by to v tomto případě, nemělo žádný faktický dopad.
Myslim, ze predrecnici se bavili o optimalizaci v pripade nestatickych lokalnich promennych.Co to?, mně přijde, že se bavíme o
static od začátku, a pak píšu právě o static a na to je reakce o podcenění optimalizace.
PS: Ad. pochyby o smyslu, on ten příklad nedává smysl ani jako celek, to je častý úděl moc krátkých příkladů. Tak si představ, že je tam nějaké if a fce se volá opakovaně.
Tiskni
Sdílej: