Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Abbiamo messo alla prova il drone Antigravity A1 capace di riprese in 8K a 360° che permette un reframe in post-produzione ad eliche ferme. Il concetto è molto valido, permette al pilota di concentrarsi sul volo e le manovre in tutta sicurezza e decidere con tutta tranquillità come gestire le riprese. La qualità dei video, tuttavia, ha bisogno di uno step in più per essere competitiva
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Dopo oltre 4 anni si rinnova la serie Sony Alpha 7 con la quinta generazione, che porta in dote veramente tante novità a partire dai 30fps e dal nuovo sensore partially stacked da 33Mpixel. L'abbiamo provata per un breve periodo, ecco come è andata dopo averla messa alle strette.
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme e Aston Martin Aramco F1 Team si sono (ri)unite dando alla vita un flagship con chip Snapdragon 8 Elite Gen 5 e design esclusivo ispirato alle monoposto di Formula 1. La Dream Edition introduce la nuova colorazione Lime Essence abbinata al tradizionale Aston Martin Racing Green, decorazioni intercambiabili personalizzate e una confezione a tema F1, intorno a uno smartphone dall'ottima dotazione tecnica con batteria da 7000mAh ricaricabile a 120W e isola fotografica intercambiabile
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-12-2003, 17:35   #21
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
Quote:
Originariamente inviato da fek

Se vi e' piaciuto, fra qualche giorno propongo un altro quesito.

E stato bellissimo
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2003, 17:35   #22
downloader
Senior Member
 
L'Avatar di downloader
 
Iscritto dal: Nov 2003
Città: Napoli
Messaggi: 6193
Quote:
Originariamente inviato da fek
Bingo! Risposta esatta

Nel primo caso il compilatore produce un costruttore che assomiglia a:

Codice:
int a;
int b;

// [...]

{
  a = b + 1;
  b = 10;
}
Si puo' chiaramente notare come il valore di b e' indefinito quando viene eseguita la prima inizializzazione, quindi il valore di a e' anch'esso indefinito.

Mentre nel secondo caso il costruttore assomiglia a:

Codice:
int b;
int a;

// [...]

{
  b = 10;
  a = b + 1;
}
Da cui e' ovvio che a e b assumono rispettivamente valore 10 e 11.

Questo comportamento e' dettato dallo standard C++ e va implementato cosi' da ogni compilatore conforme.

Detto questo, si impara che e' buona abitudine non usare gli inizializzatori quando il valore di un membro della classe dipende dal valore di uno o piu' membri della classe. Usare normale codice nel costruttore. Questo vale anche quando di mezzo ci sono chiamate a costruttori di classi padri

In tutti gli altri casi e' buona norma abituarsi a usare gli inizializzatori che aiutano a scrivere codice piu' pulito e leggible.

Se vi e' piaciuto, fra qualche giorno propongo un altro quesito.
Piaciuto piaciuto...


Proponine degli altri!!! A discrezione dei Moderatori ovviamente
__________________
Diablo3 PF | MyPC(liquidato) - Case Corsair Obsidian 800D / PSU Enermax Galaxy 1000W / MB GA-EX58A-UD7 / CPU Intel I7 920 [email protected] / MEM Corsair Dom. GT@1680mhz / GPU R9 290X / HD 2xWD 150GB raid 0/ SO - Windows 7 Ult.
downloader è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2003, 17:42   #23
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Cavolo...certo...altri altri
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2003, 17:59   #24
downloader
Senior Member
 
L'Avatar di downloader
 
Iscritto dal: Nov 2003
Città: Napoli
Messaggi: 6193
Ne posso proporre io uno al volo?

Cosa c'è di sbagliato in queste righe di codice?

void pippo(void)
{
int a[6], i = 0;

for(;i<6;i++)
i[a]=0;
}
__________________
Diablo3 PF | MyPC(liquidato) - Case Corsair Obsidian 800D / PSU Enermax Galaxy 1000W / MB GA-EX58A-UD7 / CPU Intel I7 920 [email protected] / MEM Corsair Dom. GT@1680mhz / GPU R9 290X / HD 2xWD 150GB raid 0/ SO - Windows 7 Ult.
downloader è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2003, 18:12   #25
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da downloader
Ne posso proporre io uno al volo?

Cosa c'è di sbagliato in queste righe di codice?

void pippo(void)
{
int a[6], i = 0;

for(;i<6;i++)
i[a]=0;
}

"i" non e' un'array e "a" non viene valutato come scalare, quindi i[a] e' sbagliata.

Noticina: preferite sempre ++i a i++, in altre parole preferite sempre il preincremento al postincremento a meno che non vi serva il valore della variabile da incrementare prima che venga incrementata (e' una caso raro).

Per tipi semplici non fa molta differenza, ma per oggetti che fanno overload degli operatori di incremento, potrebbe fare la differenza fra una semplice chiamata a funzione (preincremento) e la creazione di un oggetto temporaneo con conseguente chiamata a costruttore, operatore, distruttore.

Esempio:

Object obj;

++obj; // (1)
obj++; // (2)

(1) viene compilato in qualcosa di simile a:

obj.operator++(); // semplice chiamata a metodo

(2) viene compilato in:

Obj temp(obj); // costruttore di copia
obj.operator++();
temp.~Object(); // distruttore

Questo perche' state chiedendo al compilatore di conservare il valore di obj prima che venga incrementato e gentilmente lo copia in temp. Quell'oggetto temporaneo non puo' essere di solito eliminato dall'ottimizzatore perche' in generale il compilatore non puo' "guardare dentro" al costruttore e distruttore per sapere se sono operazioni semplici. In generale non lo sono.

Usate il preincremento, soprattutto se avete a che fare con STL
fek è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2003, 18:12   #26
downloader
Senior Member
 
L'Avatar di downloader
 
Iscritto dal: Nov 2003
Città: Napoli
Messaggi: 6193
Non imbrogliate...
Non dovete compilà!!!
__________________
Diablo3 PF | MyPC(liquidato) - Case Corsair Obsidian 800D / PSU Enermax Galaxy 1000W / MB GA-EX58A-UD7 / CPU Intel I7 920 [email protected] / MEM Corsair Dom. GT@1680mhz / GPU R9 290X / HD 2xWD 150GB raid 0/ SO - Windows 7 Ult.
downloader è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2003, 18:13   #27
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Formalmente niente...

i[a] == *(i + a)

Comunque è un po' bruttino...
Io, quando posso, uso sempre il preincremento...ormai l'ho preso di abitudine...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2003, 18:14   #28
downloader
Senior Member
 
L'Avatar di downloader
 
Iscritto dal: Nov 2003
Città: Napoli
Messaggi: 6193
Quote:
Originariamente inviato da cionci
Formalmente niente...

i[a] == *(i + a)

Comunque è un po' bruttino...

GIUSTO.

fek... mi deludi...
__________________
Diablo3 PF | MyPC(liquidato) - Case Corsair Obsidian 800D / PSU Enermax Galaxy 1000W / MB GA-EX58A-UD7 / CPU Intel I7 920 [email protected] / MEM Corsair Dom. GT@1680mhz / GPU R9 290X / HD 2xWD 150GB raid 0/ SO - Windows 7 Ult.
downloader è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2003, 18:16   #29
downloader
Senior Member
 
L'Avatar di downloader
 
Iscritto dal: Nov 2003
Città: Napoli
Messaggi: 6193
Quote:
Originariamente inviato da cionci
Io, quando posso, uso sempre il preincremento...ormai l'ho preso di abitudine...
Se nn l'uso all'interno di espressioni dove il pre fa differenza con il post, uso il post... questione di abitudine...
__________________
Diablo3 PF | MyPC(liquidato) - Case Corsair Obsidian 800D / PSU Enermax Galaxy 1000W / MB GA-EX58A-UD7 / CPU Intel I7 920 [email protected] / MEM Corsair Dom. GT@1680mhz / GPU R9 290X / HD 2xWD 150GB raid 0/ SO - Windows 7 Ult.
downloader è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2003, 18:16   #30
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da fek
"i" non e' un'array e "a" non viene valutato come scalare, quindi i[a] e' sbagliata.
Ho scritto una scemenza. Questo e' codice valido.

"i" e' un'intero e viene automaticamente castato a puntatore, quindi puo' essere indirizzato.
"a" e' un puntatore e viene casato automaticamente a intero, quindi puo' essere usato come indice.

Dannato C e i suoi cast
fek è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2003, 18:18   #31
downloader
Senior Member
 
L'Avatar di downloader
 
Iscritto dal: Nov 2003
Città: Napoli
Messaggi: 6193
Quote:
Originariamente inviato da fek
Ho scritto una scemenza. Questo e' codice valido.

"i" e' un'intero e viene automaticamente castato a compilatore, quindi puo' essere indirizzato.
"a" e' un puntatore e viene casato automaticamente a intero, quindi puo' essere usato come indice.

Dannato C e i suoi cast



Ma cosa? Guarda che cionci ha dato la spiegazione giusta... i cast non c'entrano proprio in questo caso.
__________________
Diablo3 PF | MyPC(liquidato) - Case Corsair Obsidian 800D / PSU Enermax Galaxy 1000W / MB GA-EX58A-UD7 / CPU Intel I7 920 [email protected] / MEM Corsair Dom. GT@1680mhz / GPU R9 290X / HD 2xWD 150GB raid 0/ SO - Windows 7 Ult.
downloader è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2003, 18:18   #32
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da downloader
Se nn l'uso all'interno di espressioni dove il pre fa differenza con il post, uso il post... questione di abitudine...
Pero' cosi' non aiuti il compilatore a ottimizzare. Anche' se logicamente e' equivalente, usare il pre incremento a volte ti salva un caricamento nel registro anche con semplici interi!
fek è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2003, 18:21   #33
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da downloader


Ma cosa? Guarda che cionci ha dato la spiegazione giusta... i cast non c'entrano proprio in questo caso.
Nope, il discorso li' e' sui cast. In realta' non si chiamano proprio cast ma "degradazione".
Cionci ha detto giusto, le due versioni sono perfettamente equivalenti in C, ma il "ragionamento" che fa il parser C++ quando interpreta quel codice e' quello che ti ho detto.

Infatti se provi a sostituire delle classi e fornisci i giusti operatori di conversione, lo vedi fare le chiamate.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2003, 18:23   #34
downloader
Senior Member
 
L'Avatar di downloader
 
Iscritto dal: Nov 2003
Città: Napoli
Messaggi: 6193
Quote:
Originariamente inviato da fek
Pero' cosi' non aiuti il compilatore a ottimizzare. Anche' se logicamente e' equivalente, usare il pre incremento a volte ti salva un caricamento nel registro anche con semplici interi!
Di che registro parli della CPU? Ma guarda che l'ottimizzatore gia lavora a modo suo e l'ottimizzazione (dipende anche dalle impostazioni chiaramente) non dovrebbe prescindere dal pre o post incremento. Ma poi i l'uso dei registri è di default... o no?
__________________
Diablo3 PF | MyPC(liquidato) - Case Corsair Obsidian 800D / PSU Enermax Galaxy 1000W / MB GA-EX58A-UD7 / CPU Intel I7 920 [email protected] / MEM Corsair Dom. GT@1680mhz / GPU R9 290X / HD 2xWD 150GB raid 0/ SO - Windows 7 Ult.
downloader è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2003, 18:26   #35
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da fek
"i" e' un'intero e viene automaticamente castato a puntatore, quindi puo' essere indirizzato.
"a" e' un puntatore e viene casato automaticamente a intero, quindi puo' essere usato come indice.
Se fosse così e supponendo che a fosse allocata all'indirizzo 100 decimale...con un ciclo del genere andresti a scrivere agli indirizzi:

400
401
402
....

Invece di

100
104
108
....

Infatti il calcolo dell'indirizzo sarebbe i + sizeof(*i)*a...invece il compialtore traduce automaticamente i[a] come *(i + a) che con l'aritmentica dei puntatori significa andare a scrivere all'indirizzo a+sizeof(*a)*i...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2003, 18:27   #36
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da downloader
Di che registro parli della CPU? Ma guarda che l'ottimizzatore gia lavora a modo suo e l'ottimizzazione (dipende anche dalle impostazioni chiaramente) non dovrebbe prescindere dal pre o post incremento. Ma poi i l'uso dei registri è di default... o no?
Si', registri della CPU
In alcune situazioni un po' intricate, quando l'ottimizzatore non riesce a star dietro a quello che scrivi, e' costretto a semplificare e si "dimentica" che le due espressioni magari possono essere equivalenti.

Se imposti le ottimizzazione al massimo e disassembly il codice prodotto, puoi vedere che riesci a mandare facilmente in crisi l'ottimizzatore che si salva il valore da incrementare anche se poi non gli serve piu'. E aiutiamolo un po' il compilatore!
fek è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2003, 18:27   #37
downloader
Senior Member
 
L'Avatar di downloader
 
Iscritto dal: Nov 2003
Città: Napoli
Messaggi: 6193
Quote:
Originariamente inviato da fek
Nope, il discorso li' e' sui cast. In realta' non si chiamano proprio cast ma "degradazione".
Cionci ha detto giusto, le due versioni sono perfettamente equivalenti in C, ma il "ragionamento" che fa il parser C++ quando interpreta quel codice e' quello che ti ho detto.

Infatti se provi a sostituire delle classi e fornisci i giusti operatori di conversione, lo vedi fare le chiamate.
Scusa... ma a me non suona bene... io so solo che la cosa avviene grazie all'operatore [] dove a[b] = *(a+b). Che c'entra il cast? Non l'ho capito cosa vuoi dire poi sulle classi...

Cionci che ne pensi?

Comunque vi saluto... a domani
__________________
Diablo3 PF | MyPC(liquidato) - Case Corsair Obsidian 800D / PSU Enermax Galaxy 1000W / MB GA-EX58A-UD7 / CPU Intel I7 920 [email protected] / MEM Corsair Dom. GT@1680mhz / GPU R9 290X / HD 2xWD 150GB raid 0/ SO - Windows 7 Ult.
downloader è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2003, 18:30   #38
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da cionci
Infatti il calcolo dell'indirizzo sarebbe i + sizeof(*i)*a...invece il compialtore traduce automaticamente i[a] come *(i + a) che con l'aritmentica dei puntatori significa andare a scrivere all'indirizzo a+sizeof(*a)*i...
Si', e' verissimo ma fai attenzione alla differenza fra C e C++. Il risultato e' uguale ma come i due parser arrivano a quel codice e' diverso.
Il C tira dritto e fa il ragionamento che fai tu.
Il C++ si domanda: "posso applicare l'operatore [] a i? Si', se lo converto (promuovo) a puntatore, posso usare a come parametro per l'operatore di default operator[](size_t i)? Si', se lo converto (degrado) ad un size_t".

Da qui in poi il comportamento di default dell'operator[] e' quello che dici tu e le due strade si riuniscono.

Comunque e' un bell'esempio perche' mostra come il C++ sia troppo zelante, retaggio della compatibilita' con il C, nel castare alle spalle del programmatore, cosa che a volte fa compilare codice come quello e magari porta a errori difficili da scoprire.

I puristi vorrebbero che i cast fossero sempre espliciti se non in pochi casi ben definiti.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2003, 18:31   #39
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da cionci
Infatti il calcolo dell'indirizzo sarebbe i + sizeof(*i)*a...invece il compialtore traduce automaticamente i[a] come *(i + a) che con l'aritmentica dei puntatori significa andare a scrivere all'indirizzo a+sizeof(*a)*i...
In effetti se si parla di C++ la cosa potrebbe diventare un po' più complicata...ora faccio qualche prova...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2003, 18:32   #40
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
comincia a prendere una piega interessante
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare Antigravity A1: drone futuristico per riprese a ...
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
Axiom Space ha completato un importante ...
Gli aeroplani Airbus utilizzeranno i sat...
Una nuova immagine della cometa interste...
'La soluzione a un problema che non esis...
Radeon RX 9000 sì, Ryzen 9000 no:...
Amazon versa 180 milioni al Fisco e canc...
Meta, il Board di Supervisione guarda o...
DJI rivoluziona le consegne aeree: il nu...
Fibercop e Microsoft Italia uniscono per...
App Store Award 2025: scarica le 17 app ...
NVIDIA fa marcia indietro, il supporto P...
Addio definitivo alla GeForce GTX 1080: ...
Numeri record per gli iPhone 17: Apple s...
L'Italia del 2025 raccontata da Google: ...
Piaggio lancia Porter NPE, il pick-up el...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 02:47.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v