我有一些代碼加分的輸出。printf的似乎一團糟一個簡單的C程序
#include <stdio.h>
#include <stdlib.h>
struct frac
{
int enumerator;
int denominator;
};
typedef struct frac frac_t;
frac_t *Add(frac_t *b1, frac_t *b2)
{
frac_t rfrac;
frac_t *p;
p = &rfrac;
(*p).enumerator= ((*b1).enumerator* (*b2).denominator) + ((*b2).enumerator* (*b1).denominator);
(*p).denominator= ((*b1).denominator* (*b2).denominator);
return p;
}
int main(void)
{
frac_t b1 = {2,4};
frac_t b2 = {1,7};
frac_t *add = Add(&b1, &b2);
printf("%i %i\n", add->enumerator, add->denominator);
system("pause");
return 0;
}
這工作完全正常。結果是:3 5,因爲它應該是。
如果我添加的 「printf」 它完全打亂了我的結果:
int main(void)
{
frac_t b1 = {2,4};
frac_t b2 = {1,7};
frac_t *add = Add(&b1, &b2);
printf("addition:\n");
printf("%i %i\n", add->enumerator, add->denominator);
system("pause");
return 0;
}
結果是:
另外:
2008958704 -1
出了什麼問題?
請參閱http://stackoverflow.com/questions/1846334/printf-modifying-a-string/1846365#1846365 – JCasso 2009-12-06 15:27:41
分數中的頂部數字稱爲「分子」,而不是「枚舉數」。 – SoapBox 2009-12-06 15:36:50