Search code examples
cturbo-c

compilation error in c statements


I am trying to run this code.this code runs successfully.But when i change variables to constant numbers i get compilation error.

My code that works fine:

 int a =5,b=6,c=7;
 int d;
 d = a,b,c;
 printf("%d",d);

as i run the code its output is 5. but when i run this segment of code:

 d = 2,6,7;
 printf("%d",d);

i get compilation error.I tried i on other compiler also. But the error still exists. What i am doing wrong.


Solution

  • Your first code use the variables and assignment d = a and b and c just as expression there, so run the code:

    int main(int argc, char const *argv[])
    {
     int a =5,b=5,c=7;
     int d;
     d = a,b,c+1;
     printf("%d",d);
     return 0;
    }
    

    You get 5, b and c+1 just valued and put them there useless.But if you run this code which includes comma expression:

    int main(int argc, char const *argv[])
    {
     int a =5,b=5,c=7;
     int d;
     d = (a,b,c+1);
     printf("%d",d);
     return 0;
    }
    

    You get 8 as the last one valued expression. You can use the number play as an expression with ():

    int main(int argc, char const *argv[])
    {
     int a =5,b=5,c=7;
     int d;
     d = (0,3,1);
     printf("%d",d);
     return 0;
    }
    

    get the last number or valued data.

    It works for me the code below:

    int main(int argc, char const *argv[])
    {
     int a =5,b=5,c=7;
     int d;
     d = 0,3+1,1-1;
     printf("%d",d);
     return 0;
    }
    

    it output is 0, but if you don't with (), it meaningless by this way, why not just use d = 0;