Nový ovladač Steam Controller jde do prodeje 4. května. Cena je 99 eur.
Greg Kroah-Hartman začal používat AI asistenta pojmenovaného gkh_clanker_t1000. V commitech se objevuje "Assisted-by: gkh_clanker_t1000". Na social.kernel.org publikoval jeho fotografii. Jedná se o Framework Desktop s AMD Ryzen AI Max a lokální LLM.
Ubuntu 26.10 bude Stonking Stingray (úžasný rejnok).
Webový prohlížeč Dillo (Wikipedie) byl vydán ve verzi 3.3.0. S experimentální podporou FLTK 1.4. S příkazem dilloc pro ovládání prohlížeče z příkazové řádky. Vývoj prohlížeče se přesunul z GitHubu na vlastní doménu dillo-browser.org (Git).
Byl publikován přehled dění a novinek z vývoje Asahi Linuxu, tj. Linuxu pro Apple Silicon. Vývojáři v přehledu vypíchli vylepšenou instalaci, podporu senzoru okolního světla, úsporu energie, opravy Bluetooth nebo zlepšení audia. Vývoj lze podpořit na Open Collective a GitHub Sponsors.
raylib (Wikipedie), tj. multiplatformní open-source knihovna pro vývoj grafických aplikací a her, byla vydána ve verzi 6.0.
Nové verze AI modelů. Společnost OpenAI představila GPT‑5.5. Společnost DeepSeek představila DeepSeek V4.
Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 164 (pdf) a Hello World 29 (pdf).
Bylo oznámeno, že webový prohlížeč Opera GX zaměřený na hráče počítačových her je už také na Flathubu and Snapcraftu.
Akcionáři americké mediální společnosti Warner Bros. Discovery dnes schválili převzetí firmy konkurentem Paramount Skydance za zhruba 110 miliard dolarů (téměř 2,3 bilionu Kč). Firmy se na spojení dohodly v únoru. O část společnosti Warner Bros. Discovery dříve usilovala rovněž streamovací platforma Netflix, se svou nabídkou však neuspěla. Transakci ještě budou schvalovat regulační orgány, a to nejen ve Spojených státech, ale také
… více »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: