C++学习笔记5 C++之三目运算符的升级

来源:互联网 发布:北京百知教育骗局 编辑:程序博客网 时间:2024/06/03 12:13

int main()

{

      int a =1;

      int b = 2;

      (a < b? a:b) = 3;

      printf("a = %d, b = %d\n", a,b);

      return 0;

}

 

上面这段代码在C语言编译器中无法通过,在C++编译中可以通过

C语言中的三目运算符返回的是变量值,不能作为左值使用

C++中的三目运算符返回的就是变量本身,因此可以出现在任何地方

注意:

三目运算符可能返回的值中如果有一个常量,则不能作为左值使用。

 

 

int q = 1;
 int p = 2;
 (q<p? q:p)=3;//编译通过,在C++中三目运算符返回的是变量,在C语言中返回的是值,所以在C++中可以作为左值,在C语言中不可以
 //(q<p? 1:p)=3;//编译不通过,三目运算符可能的返回值中如果有一个常量,则不能作为左值使用
 printf("q = %d,p=%d\n",q,p);
0 0
原创粉丝点击