Byla vydána beta verze Linux Mintu 22.3 s kódovým jménem Zena. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze, že nástroj Systémová hlášení (System Reports) získal mnoho nových funkcí a byl přejmenován na Informace o systému (System Information). Linux Mint 22.3 bude podporován do roku 2029.
GNU Project Debugger aneb GDB byl vydán ve verzi 17.1. Podrobný přehled novinek v souboru NEWS.
Josef Průša oznámil zveřejnění kompletních CAD souborů rámů tiskáren Prusa CORE One a CORE One L. Nejsou vydány pod obecnou veřejnou licenci GNU ani Creative Commons ale pod novou licencí OCL neboli Open Community License. Ta nepovoluje prodávat kompletní tiskárny či remixy založené na těchto zdrojích.
Nový CEO Mozilla Corporation Anthony Enzor-DeMeo tento týden prohlásil, že by se Firefox měl vyvinout v moderní AI prohlížeč. Po bouřlivých diskusích na redditu ujistil, že v nastavení Firefoxu bude existovat volba pro zakázání všech AI funkcí.
V pořadí šestou knihou autora Martina Malého, která vychází v Edici CZ.NIC, správce české národní domény, je titul Kity, bity, neurony. Kniha s podtitulem Moderní technologie pro hobby elektroniku přináší ucelený pohled na svět současných technologií a jejich praktické využití v domácích elektronických projektech. Tento knižní průvodce je ideální pro každého, kdo se chce podívat na současné trendy v oblasti hobby elektroniky, od
… více »Linux Foundation zveřejnila Výroční zprávu za rok 2025 (pdf). Příjmy Linux Foundation byly 311 miliónů dolarů. Výdaje 285 miliónů dolarů. Na podporu linuxového jádra (Linux Kernel Project) šlo 8,4 miliónu dolarů. Linux Foundation podporuje téměř 1 500 open source projektů.
Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.12.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
OpenZFS (Wikipedie), tj. implementace souborového systému ZFS pro Linux a FreeBSD, byl vydán ve verzi 2.4.0.
Kriminalisté z NCTEKK společně s českými i zahraničními kolegy objasnili mimořádně rozsáhlou trestnou činnost z oblasti kybernetické kriminality. V rámci operací OCTOPUS a CONNECT ukončili činnost čtyř call center na Ukrajině. V prvním případě se jednalo o podvodné investice, v případě druhém o podvodné telefonáty, při kterých se zločinci vydávali za policisty a pod legendou napadeného bankovního účtu okrádali své oběti o vysoké finanční částky.
Na lepší pokrytí mobilním signálem a dostupnější mobilní internet se mohou těšit cestující v Pendolinech, railjetech a InterPanterech Českých drah. Konsorcium firem ČD - Telematika a.s. a Kontron Transportation s.r.o. dokončilo instalaci 5G opakovačů mobilního signálu do jednotek Pendolino a InterPanter. Tento krok navazuje na zavedení této technologie v jednotkách Railjet z letošního jara.
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: