C與C++連續賦值的區別


    int a,b,c,d;
    a = b = 5;
//   ( a!=b?a:b) = 1000;//如果a不等於b 那么a = 100;這句話執行完 a還是等於5,b= 100;
    printf(" a = %d\n b = %d\n",a,b);

  這段代碼在C語言是編譯不通過,因為C語言不支持表達式不賦值;在C++可以編譯過。

 

C++里的a=b=3;與C語言一樣,但是C++還有一種寫法(a=b)=10,這樣的是b的值賦給a,然后又把10賦給a,但是10沒有賦給b;這里涉及到運算符重載的知識。

C++

    int a=1, b=2, c=3, d=4;
    a = b = 5;
    (c = d) = 10; //在C語言里編譯不通過
    ( a!=b?a:b) = 1000;//如果a不等於b 那么a = 100;這句話執行完 a還是等於5,b= 100;
    ( c != d  ? c:d)=1000;
    printf(" a = %d\n b = %d\n",a,b);
    printf(" c = %d\n d = %d\n",c,d);
//  輸出 a =5 
//      b = 1000
//      c = 1000
//      d = 4

 

 

C語言

    int a,b,c,d;
    a = b = 5;
//   (c = d) = 10; //在C語言里編譯不通過
//   ( a!=b?a:b) = 1000;
    printf(" a = %d\n b = %d\n",a,b);
    printf(" c = %d\n d = %d\n",c,d);
//   a = 5
//   b = 5

C++

    int a=1, b=2, c=3, d=4;
    a = b = 5;
    (c = d) = 10; //在C語言里編譯不通過
 
    printf(" a = %d\n b = %d\n",a,b);
    printf(" c = %d\n d = %d\n",c,d);
    //輸出  a = 5
    //     b = 5
    //     c = 10
    //     d = 4

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM