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

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 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错