Re: CINT problem?

Faouzi Attallah (attallah@clri6a.gsi.de)
Sun, 15 Nov 1998 16:08:44 +0100 (CET)


Dear Mike,

It is only a C++ programing problem. If you are Fortran programmer try
just this (as it is, without int main ()}, it is working

{
int u, np = 20 ;
double *xd = (double *) calloc(np, sizeof(double)) ;
//or
//double xd[20]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}

for(int i=0;i<5;i++){
printf("Loop number %d\n",i);

if(4>5) { //always false

for(u=0; u < np; u++) // could be used with "double xd[20] ;" see bellow
xd[u] = 0. ;

for( u=0; u<1; u++)
printf("Inside test loop\n");

printf("This should not be printed\n");

} //if block

} //for loop
}

F. Attallah
GSI mbH
Planckstr 1
D-64291 Darmstadt
Tel: +49 (0)6159 71 2142
Fax: +49 (0)6159 71 2901
Email: F.Attallah@gsi.de

On Sat, 14 Nov 1998, Mike Heffner wrote:

> Hello,
>
> I am quite new to root and C++. I am having trouble understanding
> what CINT is doing. CINT will execute code in blocks that it should not
> enter. The following is an example;
>
> ---------------------------------------
> int main(){
>
> for(int i=0;i<5;i++){
> printf("Loop number %d\n",i);
>
> if(4>5) { //always false
>
> double xd[20]={0}; // this casues problems
>
> for(int u=0;u<1;u++){printf("Inside test loop\n");}
> printf("This should not be printed\n");
>
> } //if block
>
> } //for loop
> return 0;
> }
> ------------------------------------------
> The if statement is always false. So, I understand that code in
> that block should never be executed? If I compile this with a regular C++
> compiler (g++) it works as I expect. If I run this same code with CINT, I
> get something I don't understand. The first time through the first for
> loop, I get the printed statement from the line "printf("This should not
> be printed\n");".
> I have found that if I remove either of the two lines,
>
> double xd[20]={0}; // this casues problems
>
> for(int u=0;u<1;u++){printf("Inside test loop\n");}
>
> the problem goes away. Could someone explain to me what is happening
> here?
>
> Thanks,
> Mike Heffner
>
>