Skocz do zawartości
czara

Sztuczki i kruczki w C - czyli jak zagmatwac kod programu.

Rekomendowane odpowiedzi

Masz racje.. ale ja mimo to bardoz nie lubie MFC :) juz wole w czystymi WinAPI trzaskac, choc wtedy jest troche katorga, ze juz o obsludze jakis COM'ow w czystym API nie wspomne.. masochizm :)

No ale wydaje mi sie ze temat jest chyba troche inny, moze czas skonczyc ten OT ? :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zaskocze was z lekka na ten temat:

Dokoncz kod tak aby nastapila zamiana wartosci zmiennych x i y bez uzywania dodatkowych zmiennych :x=1234;y=2345;
Człowiek który uczył mnie programowania pod Windows pokazał nam takie rozwiązanie w C++:

x ^= y ^= x ^= y;
po wykonaniu tej sekwencji wartości faktycznie są zamienione, przynajmniej u mnie, przy kompilacji na VS.NET 2002

Swoją drogą ktoś mógłby to sprawdzić na gcc.

 

Dokładny opis dlaczego tak się dzieje znajduje się na stronie:

http://www.ii.uni.wroc.pl/~wzychla/cstest.html

w punkcie 1. (przycisk działa niestety tylko pod ie)

 

Pozdrawiam wszystkich forumowiczów.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Na C# po wpisanie takiego kodu zamiana się nie dokona. Chociaż praktycznie nie znam tego języka ( my first time 8) ) ale nie było tak trudno to sprawdzić.

using System;namespace Project1{	public class Ex1	{        public static void Main(string[] args)       { 	                      int     x = 123, y = 456;                      Console.WriteLine( "najpierw x ="+ x + " a y = " + y );                     x ^= y ^= x ^= y;                     Console.WriteLine( "a teraz  x ="+ x + " a y = " + y  );                                                      } 	}}

A takie jest rezultat, czyli ta zamiana tu nie działa.

 

najpierw x =123 a y = 456a teraz  x =0 a y = 123

Oczywiście w C++ wszystko jest bajecznie zgodne.

 

#include<conio.h>#include<iostream.h>//------------------------------------------------------------------------------main(){int x = 123, y = 456; cout << "najpierw x = " << x  << "  y = " << y  << endl; x ^= y ^= x ^= y; cout << "a potem  x = " << x  << "  y = " << y;getch();}//------------------------------------------------------------------------------

Wynik jest jak to powszechnie wiadomo spodziewany :) .

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Mam takie pytanie odnośnie tego C#asza jaki jest tu odpowiednik funkcji getch() czyli czekanie na naciśnięcie klawisza ???

Bo bym se oblukał , ale nie chce mi się szukać :lol:

 

Albo lepiej kupić książkę C# dla pasjonatów C++ hehe warto się pouczyć :P

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dobra.. to mam nastepny ciekawy kod.. pokazal go nam jeden koles od laborek i powiedzial, ze ponoc takie zadanie daja w jakiejs tam firmie przy rekrutacji.

 

[php:1:7d912586e2]

#include <iostream>

using namespace std;

 

class base

{

public:

int bVal;

 

base() : bVal(0) {}

};

 

class deriv : base

{

public:

int dVal;

 

deriv() : dVal(1) {}

};

 

void wyswietl(base *arr, int n)

{

for (int i = 0; i < n; i++, arr++) {

cout << arr->bVal;

}

cout << endl;

}

 

int main()

{

base tab1[5];

 

wyswietl(tab1, 5);

 

deriv tab2[5];

 

wyswietl((base*)tab2, 5);

 

return 0;

}

[/php:1:7d912586e2]

 

Pytanie jest klasyczne.. co wyswietli sie na ekranie? Prosze bez sprawdzania kodu w kompilatorze :P

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie



×
×
  • Dodaj nową pozycję...