Redian新闻
>
同一个变量,printf 两个结果
avatar
同一个变量,printf 两个结果# Programming - 葵花宝典
k*e
1
同一个变量,printf 居然给一个非零,一个nan
难道是gcc 4 的bug ?
难以理解啊
程序是前辈改自FORTRAN,到处是全局变量,数组一会儿从0一会儿从1开始,但没想到p
rintf 还给这么个答案。
哪位有经验的?
代码
printf("First: %e\n", g_NAFVariable.TFS[0]);
printf("First: %e\n", g_NAFVariable.TFS[1]);
printf("First: %e\n", g_NAFVariable.TFS[2]);
printf("First: %e\n", g_NAFVariable.TFS[3]);
for (iCpt = 1; iCpt <= g_NAFVariable.NFS; iCpt++)
{
printf("AMPL: ", iCpt);
printf(" %f+%f abs=%f arg(AMPL)=%f FREQ=%f\n",
g_NAFVariable.ZAMP[iCpt].reel
avatar
O*e
2
Your output doesn't match your code. The code has four printf("First:")
statements but the output has six "First:". What is the definition of
g_NAFVariable?

到p

【在 k****e 的大作中提到】
: 同一个变量,printf 居然给一个非零,一个nan
: 难道是gcc 4 的bug ?
: 难以理解啊
: 程序是前辈改自FORTRAN,到处是全局变量,数组一会儿从0一会儿从1开始,但没想到p
: rintf 还给这么个答案。
: 哪位有经验的?
: 代码
: printf("First: %e\n", g_NAFVariable.TFS[0]);
: printf("First: %e\n", g_NAFVariable.TFS[1]);
: printf("First: %e\n", g_NAFVariable.TFS[2]);

avatar
c*g
3
可能的问题太多了
out of range, multithreads.....

到p

【在 k****e 的大作中提到】
: 同一个变量,printf 居然给一个非零,一个nan
: 难道是gcc 4 的bug ?
: 难以理解啊
: 程序是前辈改自FORTRAN,到处是全局变量,数组一会儿从0一会儿从1开始,但没想到p
: rintf 还给这么个答案。
: 哪位有经验的?
: 代码
: printf("First: %e\n", g_NAFVariable.TFS[0]);
: printf("First: %e\n", g_NAFVariable.TFS[1]);
: printf("First: %e\n", g_NAFVariable.TFS[2]);

avatar
k*e
4
第一个 First 输出忽略,因为我没有把相应的代码考上。
g_NAFVariable 是全局变量,struct
ZFT,ZAMP 是动态分配的数组。
TFS 是double,动态分配数组

【在 O******e 的大作中提到】
: Your output doesn't match your code. The code has four printf("First:")
: statements but the output has six "First:". What is the definition of
: g_NAFVariable?
:
: 到p

avatar
k*e
5
没有多线程
out of range: 即使out,两次读取下标一样啊!
除非被什么其他程序中途改了。

【在 c*****g 的大作中提到】
: 可能的问题太多了
: out of range, multithreads.....
:
: 到p

avatar
c*g
6
说的就是有可能其他function改了。

【在 k****e 的大作中提到】
: 没有多线程
: out of range: 即使out,两次读取下标一样啊!
: 除非被什么其他程序中途改了。

avatar
D*s
7
先别考虑是不是printf的问题,先证明不是你自己的问题,比如在开头把你要输出的东西
复制一遍,到local的变量/数组里面,然后在printf输出之前做个比较。

【在 k****e 的大作中提到】
: 没有多线程
: out of range: 即使out,两次读取下标一样啊!
: 除非被什么其他程序中途改了。

avatar
O*e
8
At the beginning of the quoted code, TPS[0...3] is printed.
In the for-loop, at the end of the printf statement TPS[iCpt]
is printed again where iCpt=1...?. However I can't match up the
output with the code, even after seeing the "correction".
kosine you need to post a clearer explanation of what you see
as wrong. Print the address of the variable and the value of
the variable, or run the code in a debugger, make sure you are
looking at the same thing.
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。