C nyelven a konstans deklarálásnak vannak szabályai? Optimalizálás esetén kiveszi a tömböt a lefordított forrásból.
Deklaráltam egy sokezer elemet tartalmazó tömböt a következő képpen:
long tomb [150000]= {
...
...
};
Ilyen módon deklaráltam. Tesztelni szeretnék valamit, azért a nagy tömb... Normális, hogy az optimalizálás módosítja a kódot?
Ubuntu alatt GCC már a -O2 kapcsoló hatására is ezt teszi.
"Normális, hogy az optimalizálás módosítja a kódot?"
Igen, ez a célja a gépi utasításokat csökkentheti növelheti. Nem értek mindent pontosan, hogyan használod a tömböt a programban?
For ciklussal megyek, i 0-tól n-1-ig
j pedig i+1-től n-ig.
Cserélgeti az elemeket, elején végén kiírja az időt, ennyi történik.
Tehát tomb[i] cserélve tomb[j]
Ezen kívül és hogy elején, végén kiírja az időt, nem tesz mást.
És mi a kérdés?
C-ben nincs konstans egyébként.
A kérdés, hogy miért vágja ki a binárisból a tömböt. Jó akkor nem konstans, hanem előre feltöltött tömb...
Most nem tudom kipróbálni, nincs a közelemben C fordító, de olyan warning üzenet volt, hogy "array excess of element"...
Kicsit bizonytlaan vagyok hogy a két ciklus meddig menjen, mert még kezdő vagyok és hogy jó -e ez így...
tehát a tomb változó 150000 elemű.
for(i=0; i<150000;i++){
for(j=i+1; j<150001;j++){
if (tomb[i]<tomb[j]) {
cs=tomb[i];
tomb[i]=tomb[j];
tomb[j]=cs;
nem tetszett neki az sem, ha i 0-tól 149999-ig, j pedig i+1-től 150000-ig ment...
Rosszak a határok, szerintem túlcímzel. Helyesen így lenne
for(i=0; i<150000-1;i++){
for(j=i+1; j<150000;j++){
Ezek szerint akkor ha
for(i=0; i<149998;i++){
for(j=i+1; j<149999;j++){
Itt ebben az esetben <= jelet nem kell használni?
Ekkor tökéletesnek kell lennie?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!