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
时间: 2024-10-20 19:04:08