Byl vydán Nextcloud Hub 8. Představení novinek tohoto open source cloudového řešení také na YouTube. Vypíchnout lze Nextcloud AI Assistant 2.0.
Vyšlo Pharo 12.0, programovací jazyk a vývojové prostředí s řadou pokročilých vlastností. Krom tradiční nadílky oprav přináší nový systém správy ladících bodů, nový způsob definice tříd, prostor pro objekty, které nemusí procházet GC a mnoho dalšího.
Microsoft zveřejnil na GitHubu zdrojové kódy MS-DOSu 4.0 pod licencí MIT. Ve stejném repozitáři se nacházejí i před lety zveřejněné zdrojové k kódy MS-DOSu 1.25 a 2.0.
Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.
Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.
Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.
Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).
OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.
Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.
R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.
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 constexpr
y, nikoliv const
proměnnými. Ten problém, co jsem měl, byl právě použití const
u 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…
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: