12 C++ - 三目运算符功能增强(比较C语言)

简介: 12 C++ - 三目运算符功能增强(比较C语言)

c语言三目运算表达式返回值为数据值,为右值,不能赋值。

int a = 10;
  int b = 20;
  printf("ret:%d\n", a > b ? a : b);
  //思考一个问题,(a > b ? a : b) 三目运算表达式返回的是什么?
  //(a > b ? a : b) = 100;
  //返回的是右值

c++语言三目运算表达式返回值为变量本身(引用),为左值,可以赋值。

int a = 10;
  int b = 20;
  printf("ret:%d\n", a > b ? a : b);
  //思考一个问题,(a > b ? a : b) 三目运算表达式返回的是什么?
  cout << "b:" << b << endl;
  //返回的是左值,变量的引用
  (a > b ? a : b) = 100;//返回的是左值,变量的引用
  cout << "b:" << b << endl;

输出:

左值和右值概念:

  • 在c++中可以放在赋值操作符左边的是左值,可以放到赋值操作符右面的是右值。
  • 有些变量即可以当左值,也可以当右值。
  • 左值为Lvalue,L代表Location,表示内存可以寻址,可以赋值。
  • 右值为Rvalue,R代表Read,就是可以知道它的值。
  • 比如:int temp = 10; temp在内存中有地址,10没有,但是可以Read到它的值。
目录
相关文章
|
2天前
|
存储 安全 程序员
C++中的四种类型转换运算符
reinterpret_cast` 则是非常危险的类型转换,仅用于二进制级别的解释,不检查安全性。`dynamic_cast` 用于类的继承层次间转换,向上转型总是安全的,向下转型时会借助 RTTI 进行安全性检查。只有当转换路径在继承链内时,转换才会成功。
8 1
|
2天前
|
程序员 编译器 C语言
C语言运算符深入解析
C语言运算符深入解析
|
2天前
|
程序员 C++
C++中的运算符:深入理解与应用
C++中的运算符:深入理解与应用
|
5天前
|
C语言 C++
【C语言/C++】牛客网刷题训练-12
【C语言/C++】牛客网刷题训练-12
|
5天前
|
存储 安全 程序员
C语言程序设计——强制类型转换运算符
C语言程序设计——强制类型转换运算符
|
6天前
|
C语言 C++
从C语言到C++_13(string的模拟实现)深浅拷贝+传统/现代写法(下)
从C语言到C++_13(string的模拟实现)深浅拷贝+传统/现代写法
16 0
|
6天前
|
存储 C语言
从C语言到C++_13(string的模拟实现)深浅拷贝+传统/现代写法(中)
从C语言到C++_13(string的模拟实现)深浅拷贝+传统/现代写法
13 0
|
6天前
|
存储 编译器 测试技术
从C语言到C++_13(string的模拟实现)深浅拷贝+传统/现代写法(上)
从C语言到C++_13(string的模拟实现)深浅拷贝+传统/现代写法
16 0
|
6天前
|
机器学习/深度学习 canal NoSQL
从C语言到C++_12(string相关OJ题)(leetcode力扣)
从C语言到C++_12(string相关OJ题)(leetcode力扣)
17 0
|
6天前
|
编译器 测试技术 C语言
从C语言到C++_11(string类的常用函数)力扣58和415(下)
从C语言到C++_11(string类的常用函数)力扣58和415
7 0