strange problem with "plus-equals"
Andrew Haley
aph@gcc.gnu.org
Sun Dec 31 12:38:00 GMT 2006
David Mebane writes:
>
> Having a problem with "+=" operator (and the addition / assignment operation in
> general) in g++.
>
> I have a protected function that looks like:
>
> double LSMbdnew::norm(double *vec1, long num) {
> long i;
> double a, ret;
> ret = 0.0;
> for (i=0; i<num; i++) {
> a = *(vec1 + i);
> ret = ret + a*a;
> }
> return ret;
> }
>
> Problem is, the variable ret becomes zero after the second iteration in the test
> I'm running. How does this happen? I have checked the variable ret -- there is
> no conflict in this scope. In fact, if I change the last line in the loop to a
> straight assignment, there's no problem. But when I try to use assign/add,
> problem.
If you turn this into a test case people can actually run, then people
will help you. A naked function isn't a program that people can test.
Andrew.
More information about the Gcc-help
mailing list