Fontos linkek a C-ről:
Prog.hu-s cikkek
Prog.hu-s tudástár témák
The C Library Reference Guide
Standard C
Wikipedia
C Tutorial
Programming in C
Bevezetés a C programozási nyelvbe
Gyorskeresés
Legfrissebb anyagok
- Bemutató Route 66 Chicagotól Los Angelesig 2. rész
- Helyszíni riport Alfa Giulia Q-val a Balaton Park Circiut-en
- Bemutató A használt VGA piac kincsei - Július I
- Bemutató Bakancslista: Route 66 Chicagotól Los Angelesig
- Tudástár AMD Radeon undervolt/overclock
Általános témák
LOGOUT.hu témák
- [Re:] [HThomas:] Kia Ceed SW JD vs CD tapasztalatok
- [Re:] [Luck Dragon:] Asszociációs játék. :)
- [Re:] [bitpork:] Fogyasztásra ítélve
- [Re:] eBay-es kütyük kis pénzért
- [Re:] [D1Rect:] Nagy "hülyétkapokazapróktól" topik
- [Re:] [sziku69:] Fűzzük össze a szavakat :)
- [Re:] Elektromos rásegítésű kerékpárok
- [Re:] [koxx:] Bloons TD5 - Tower Defense játék
- [Re:] [antikomcsi:] Való Világ: A piszkos 12 - VV12 - Való Világ 12
- [Re:] [gban:] Ingyen kellene, de tegnapra
Szakmai témák
PROHARDVER! témák
Mobilarena témák
IT café témák
Téma összefoglaló
- Utoljára frissítve: 2014-04-25 14:12:00
LOGOUT.hu
Hozzászólások
jattila48
aktív tag
Hová lettek az ez utáni hozzászólások? Előbb még volt itt vagy 5.
„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár
dabadab
titán
Gondolom járt erre egy moderátor.
Nem maradtál le semmiről
DRM is theft
kispx
addikt
Valószínűleg valamelyik moderátor törölte. Bár a tartalmukat elnézve nem baj, úgy sem volt benne semmi érdekes, csak a már megkezdett flame.
btraven
őstag
float f1 = 1.6f;
Ez hogy van fájlban kiírva? Milyen bájtok? Vagy teljesen implementáció függő?
Át szeretném hackelni egy játék fájljában egy kard erejét
btraven
őstag
Közben meglett [link]
kovisoft
őstag
Tudod biztosan, hogy a játék float-ként tárolja? Lehet akár double-ként, esetleg 10-zel vagy 100-zal felszorzott integer-ként is tárolva, az semmit nem jelent, hogy hogyan van megjelenítve.
btraven
őstag
Szerencsére float, és meg is találtam a fájlban. Átírtam és most kiirtok mindenkit.
buherton
őstag
Lenne egy számomra fogós kérdés.
Az alábbi kódrészletben miért biztos mindenki, hogy a pointer majd az inkrementált címre fog mutatni az értékadáskor az alábbi kódrészletben?
*p++ = 1;
Keresem az okot a miértre, de őszintén nem találom. Annyit sikerült kideríteni, hogy nem a precedencia az ok.
A C99 szabványban (alább a részletek) úgy értelmezem, hogy ténylegesen bármikor megtörténhet két sequence point között.
Ráadásul ez a leírás is csak ráerősít arra, hogy az order unspecified: [cpp reference - Order of evaluation]
Segítene valaki felhomályosítani ebben az ügyben?
[ Szerkesztve ]
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
sztanozs
veterán
[link]
Precedence:
1) ++ (postfix increment)
2) * (dereference)
3) = (assignment)
Order of ops (evaluation):
a = b (azaz balról jobbra)
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
buherton
őstag
Köszi! A második link nem megy.
Ebben az esetben pedig verseny helyzet lesz?int main() {
static int num = 6;
printf("%d ",num--);
if(num)
main();
return 0;
}
Ezt lefuttatva 6 5 4 3 2 1-t ír ki, de nem lennék meglepve, ha máshol ugyanez 5-el kezdődne.
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
kovisoft
őstag
Az általad korábban linkelt szövegrészben is ez van:
"The result of the postfix ++ operator is the value of the operand. After the result is obtained, the value of the operand is incremented."
Nyilván a -- operátorra ugyanez igaz. Azaz teljesen egyértelmű a dolog: először kiolvassa num értékét (ezt fogja átadni a printf-nek), és csak ezután fogja csökkenteni num-ot. Ezért először 6-ot fog kiírni.
[ Szerkesztve ]
buherton
őstag
Úgy érzem, hogy ezt nem fogom megérteni soha. Évek óta nem nyúltam C kódhoz csak C++-hoz, de annak is már 2 éve. Bár ezekkel akkor sem voltam tisztában.
Ráadásul rettenetesen bosszant az, hogy több C kvízes oldalon vannak hibás feladványok. Az egyik típus hiba az volt, hogy a függvény int-t várt és rendbe ott volt az if, hogy csak 0-nál nagyobb számokkal foglalkozzon. Negálás sehol nem volt, vagyis negatív számokra nem működik jól a függvény. A másik típus hiba az, hogy a két sequence point között csak egyszer lehet az értéket módosítani. Illetve volt még olyan is, hogy singed negatív számot akart shiftelni, ami undefined.
struct player
{
char pname[20];
}pl;
char* play(struct player *temp_pl)
{
strcpy(temp_pl->pname, "kohli");
return temp_pl->pname;
}
int main()
{
strcpy(pl.pname, "dhoni");
printf("%s %s", pl.pname, play(&pl));
return 0;
}
Ez is egy kvíz, ahol nincs olyan opció, hogy undefined. Undefined-nak gondolom, mert a függvény paraméter kiértékelés sorrendje nincs leírva a szabványban.
[ Szerkesztve ]
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
dabadab
titán
A bemásolr példában mindegy a kiértékelés sorrendje, mert a play() nem változtatja meg a pl.plname-et (az nem egy pointer, hanem egy tömb)
DRM is theft
buherton
őstag
A play() nem strcpy-zi be a "kohli" stringet a pl.pname-be? Mármint végeredményben nem ugyanarra a memória területre fognak hivatkozni?
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
dabadab
titán
A printf() a plname címét kapja meg, az meg nem változik. Ami változik, az a karaktertömb tartalma, de az meg csak a printf() függvénytörzsében lesz érdekes, de mire oda jut a végrehajtás, addigra már mindkét paraméter ki van értékelve.
DRM is theft
buherton
őstag
És tényleg. Köszi!
Egyre inkább tartok a szerdai interjútól... Ha ilyeneket fognak kérdezni, akkor aligha hiszem, hogy felvesznek senior pozícióba.
[ Szerkesztve ]
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
gregory91
senior tag
"de nem lennék meglepve, ha máshol ugyanez 5-el kezdődne"
Akkor akkor fordítsd meg a num--
>> --num
-ra.
Remélem itt elfér - https://sites.google.com/site/geriprojekt/ - https://github.com/kgregoryan - Az ember téved,a gép hibázik.
Elkezdtem belekontárkodni a C nyelv tanulásába és van valami, amit nem értek a bitwise complementer operatornál:
int a = 10; /* 10 = 1010 */
int c = 0;
c = ~(a);
printf(c);
Output:
-11
Namost, ha jól értem, a fenti operator a biteket flippeli, vagyis a 0-ból 1, az 1-ből 0 lesz, azaz a fenti 10-es decimális értékből nem -11-nek kellene lennie, hanem 5-nek. Ebből számomra az következik, hogy van itt még valami, amiről nem tudok.
Mi az, hogy jön ki a -11? Forrás
[ Szerkesztve ]
https://www.coreinfinity.tech
axioma
veterán
A nem lathato nullakat is flip-eli, es a legelso 1-es az kettes komplemens abrazolas negativ jele. Kicsit nezz korul a valtozo merete es negativ szamokok abrazolasa temakorben.
[ Szerkesztve ]
kispx
addikt
A 10 "nemcsak" 1010, hanem 00000000 00000000 00000000 00001010 (amennyiben az int 4 bájton tárolódik)
A bitwise az összes bitet negálja: 11111111 11111111 11111111 11110101
Ami a negatív számok ábrázolása miatt (kettes komplemens), miatt -11
Köszönöm a válaszokat, így már világos.
https://www.coreinfinity.tech
alapz@j
tag
btraven
őstag
Van Dos-os EXE fájlom. Vissza lehet szedni belőle a C programkódot?
Addig sejtem hogy disassembler-rel assembly-t lehet csinálni. De azzal nem vagyok kisegítve.
buherton
őstag
Mi a cél?
Értelmes kódot nem fogsz visszakapni, maximum a hablagyot olvashatod C syntaxszal.
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
btraven
őstag
Játékban dungeon helyek a térképen 4 byte-on vannak leírva/tárolva. És nem tudok rájönni a logikájára. Gondoltam megnézném a forráskódot.
sztanozs
veterán
Nagyon regi jateknak kell legyen, ha a terkep is bele vamn forditva az exe-be...
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
btraven
őstag
A térkép külön adatfájlban van. A térképeket sikerült is kirajzolnom programmal, csak a rajta levő speciális helyeket nem. Mint üzenetek, teleportok, fel/lejárat stb. Pedig az is fontos lett volna.
De mindegy is mert a játék közben olyan bugos lett hogy elfogyott a türelmem és feladtam.
dabadab
titán
Csak így kíváncsiságból: melyik játék ez?
DRM is theft
btraven
őstag
[link] Dragon Sword (nagy rajongója vagyok a Wizardry játékoknak) ez is jó volt addig amíg találtam hozzá térképeket a neten. De hogy én rajzolgassam, az inkább munka.
[ Szerkesztve ]
cog777
senior tag
Mint c++ fejleszto, lenne par kerdesem c-vel kapcsolatban. Eleg regen foglalkoztam c-vel, most kaptam par feladatot, kapasbol a c++-os mintak jutottak eszembe, de aztan felvetodott bennem, hogyan oldanam meg a feladataimat c-ben?
Egyik feladat igenyli a dependency injection-t, amikor egy kliens kod hasznalni akar valamilyen implementaciot, pl driver-t.
Ekkor c++-ban csinalok egy interface osztalyt, majd abbol orokoltetem. Az interface osztalyon keresztul at lehet adni a driverA-t es a driverB-t is. Helyzettol fuggoen.
Na most, c-ben ezt hogy lehetne megoldani?
Alap esetben csinalnek egy csomo fuggvenyt ami a driver-t elinditja, es ezek a fuggvenyek ertelemszeruen elerhetok lennenek. De ilyenkor nem tudom barmikor kicserelni a driver funkcioit a kliensben hacsak at nem irom...
Esetleg atadok egy strukturat, amiben fuggvenyre mutato pointerek vannak es azt meg a kliens inicializalasa elott feltoltom annak megfeleloen hogy vagy a driverA, vagy driverB-nek a funkcioit akarom hasznalni a kliensben?
Remelem ertheto a problemam... szoval mi lehet a "dependency injection" c-ben?
HP ZBook Workstation A3000 - Linux Mint; Raspberry Pi4 - Raspbian
dabadab
titán
Én a magam részéről a struktúrás függvénypointeres megoldást csinálnám (csináltam).
Ami nagyobb C projekteket láttam, ott is ez köszönt vissza, kicsit úgy nézetek ki, mintha egy régi g++ kimenetét láttam volna, ami még a C++ kódból C-t generált és a függvények első paramétere tulajdonképpen a this volt.
DRM is theft
cog777
senior tag
koszi, szoval jo uton jarok.
HP ZBook Workstation A3000 - Linux Mint; Raspberry Pi4 - Raspbian
buherton
őstag
Van más értelmes alternatíva erre? Szerintem nincs.
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
cog777
senior tag
Igy gyakorlatilag unit test szerusegeket is tudok irni, nem? helyettesitem a fuggosegeket mock-al...
HP ZBook Workstation A3000 - Linux Mint; Raspberry Pi4 - Raspbian
buherton
őstag
Igen, de az elég macera.
Ezt szerettem volna kipróbálni: [cmock], de még nem volt időm.
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
Téma tudnivalók
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
Mai Hardverapró hirdetések
prémium kategóriában
- iPhone 14 Pro 128 GB Space Black, 11 hónapos, kártyafüggetlen, 2024. május végéig garis , akku 91%
- Asus VivoBook X509JA-BQ904T
- HP EliteBook 640 G9 Ezüst (14" / Intel i5-1235U / 16GB / 512GB SSD / Win 11 Pro) -10% Most 203.990 F
- Lenovo M810z AIO Core I5 6400 4x2700/8GB/120G SSD/wifi/cam 21,5 -10% 66.950 ft
- Microsoft Surface Book 2 - i7-8650u/8GB/256GB SSD/Windows 11 -. 10% Most Csak 125990 Forint