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