Czy jest jakieś logiczne wyjasnienie...

0

Dla czego ten prosty program

 #include <iostream>
#include <math.h>

using namespace std;

int main() {
float qT=0;
float Tsr=0;
cout << "Tsr: ";
cin >> Tsr;
int n;
cout << "n: ";
cin >> n;
const int N=n;
float T[N];
int size = sizeof(T)/sizeof(float);

cout << "Pomiary" << endl;

for (int i=0; i<size; i++)
{
    cout << i+1 << ": ";
    cin >> T[i];
    cout << endl;
}

for(int i=0; i<N; i++)
    qT += pow(Tsr-T[i],2);

qT = sqrt(qT / (n*(n-1)));

cout << qT << endl;
return 0;
}

oraz jego odpowiednik w C

 #include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main() {
float qT=0;
float Tsr=0;
printf("%s", "Tsr: ");
scanf("%f", &Tsr);
int n;
printf("%s", "n: ");
scanf("%i", &n);
const int N=n;
float T[N];
int size = sizeof(T)/sizeof(float);

printf("%s", "Pomiary\n");

int i;
for (i=0; i<size; i++)
{
    printf("%i%s", i+1, ": ");
    scanf("%f", &T[i]);
    printf("%s", "\n");
}

int k;
for(k=0; k<N; k++)
    qT += pow(Tsr-T[k],2);

qT = sqrt(qT / (n*(n-1)));

printf("%f%s", qT, "\n");
return 0;
}

Różnią się w wadze aż tak:
C++ 916KB
C 28KB

Może to pytanie nie będzie mi spędzać snu z powiek, ale jestem ciekaw czemu jest aż tak wielka różnica między rozmiarami plików.
W przypadku C jest nawet więcej załączonych bibliotek

ps. nie znoszę print/scan'f'a ;|

1

Iostream robi swoje. Jak kompilowałeś? Na GCC 4.6.2 z flagą -O2 C++ ma 16 KiB a C 8.

0

U mnie zajmują odpowiednio 9 kB i 10 kB. Wszystko zależy jaki kompilator, jaki system, jakie flagi, i przede wszystkim czy biblioteka standardowa (znacznie większa w C++ niż w C) jest linkowana statycznie czy dynamicznie.
Symbole debugera też mogą bardzo powiększyć exeka.

1 użytkowników online, w tym zalogowanych: 0, gości: 1