是个小趴菜 2022-11-13 20:25 采纳率: 0%
浏览 28

C++三目运算符原理

众所周知
在c语言中,三目运算符的结果返回的是一个具体的数值,是一个常量;
而C++中,三目运算符返回的是一个变量,可以作为左值使用;
那么C++中这个三目运算符是如何做到返回一个变量的呢?
让表达式返回一个内存空间的首地址吗?

  • 写回答

1条回答 默认 最新

  • 谢玄. 2022-11-14 11:55
    关注

    这个是编译器的编译方式的不同,c 返回的是值 ,c++ 返回的是变量。
    比如
    printf("%d",a=3+2);
    在 C 里面等同于

    a = 3 + 2;
    pritf("%d",5);
    

    在C ++ 里面等同于

    a = 3 + 2;
    pritf("%d",a);
    

    三木运算符也是一样的,他是需要把复杂的语句拆解开来,变成简单的语句,最后变成机器码的。

    ( a == 1 ? b = 4 : c = 5 ) = 6;
    // c
    ( 1 == 1 ? b = 4 : c = 5 ) = 6;
    (c=5)=6;
    c = 6;
    // c ++
    ( 1 == 1 ? b = 4 : c = 5 ) = 6;
    (c=5)=6;
    5 = 6;
    

    所以c会报错,c++ 不会

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 11月13日

悬赏问题

  • ¥15 (SQL语句|查询结果翻了4倍)
  • ¥15 Odoo17操作下面代码的模块时出现没有'读取'来访问
  • ¥50 .net core 并发调用接口问题
  • ¥15 网上各种方法试过了,pip还是无法使用
  • ¥15 用verilog实现tanh函数和softplus函数
  • ¥15 Hadoop集群部署启动Hadoop时碰到问题
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 QTableWidget重绘程序崩溃
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊