• 三元运算符,i++(先用后加) ++i (先加后用)区别


    三元运算符是软件编程中的一个固定格式,语法是“条件表达式?表达式1:表达式2”。使用这个算法可以使调用数据时逐级筛选。
    表达式:“()? :”。
    ()中进行二元运算
    ?在运算,就形成三元运算符
     

    i++和++i命令的区别有:

    1、赋值顺序不同

    ++ i 是先加后赋值;i ++ 是先赋值后加;++i和i++都是分两步完成的。

    因为++i 是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,++i = a =b,即 ++i 是一个左值;i++ 的后面一步是自增,不是左值。

    形象的理解可以是i++先做别的事,再自己加1,++i先自己加1,再做别的事情。

    2、效率不同

    比如i=3,b=i++就是说b=3,完成之后让i变成4,b=++i就是先让i++变成4,然后b=4,其中++i比i++效率要高些。一般来说在循环域里面,这两者并没有什么很大的区别,但是要注意其生存周期,以及i值在程序流中的变化。

    3、 i++ 不能作为左值,而++i 可以。

    左值是对应内存中有确定存储地址的对象的表达式的值,而右值是所有不是左值的表达式的值。一般来说,左值是可以放到赋值符号左边的变量。

    但能否被赋值不是区分左值与右值的依据。比如,C++的const左值是不可赋值的;而作为临时对象的右值可能允许被赋值。左值与右值的根本区别在于是否允许取地址&运算符获得对应的内存地址。

    比如:

    int i = 0;

    int *p1 = &(++i);//正确

    int *p2 = &(i++);//错误

    ++i = 1;//正确

    i++ = 1;//错误

    扩展资料

    当i=5时,s=(++i)+(++i)和s=(i++)+(i++)的值:

    1、当i=5时,s=(++i)+(++i)=13 先算第一个(++i),++在前面,就把i先加1再把赋值,即先把i变为6然后再得出(++i)的值为6,这时i已经变为6了,

    再计算第二个(++i),++在前面也是先把i加1后再赋值,不过这时的i已经为6了,第一步的时候把i变成6了的,然后加1的话就变成7了,所以第二个(++i)的值为7,s=(++i)+(++i)=6+7=13。

    2、s=(i++)+(i++)=11 先算第一个(i++),i在前面,就先赋值再把i加1,即(i++)的值为5,i的值变为6,第二个(i++),i在前面,先赋值再把i加1,这个时候的i已经为6了,即(i++)的值为6,而i已经变为7了。所以s=(i++)+(i++)=5+6=11。

    i++ 爱一个人,先爱后嫁,真爱。

    ++i 先嫁给他,然后再爱,嫁爱。

  • 相关阅读:
    Java精选笔记_EL表达式
    Java精选笔记_文件上传与下载
    Java精选笔记_Servlet事件监听器
    windows 下安装perl Tk 模块
    html 基础
    用grep 筛选fastq 序列
    php 统计fasta 序列长度和GC含量
    perl 截取 fastq文件
    Java_基础知识回顾
    Git_期末总结
  • 原文地址:https://www.cnblogs.com/gdf456/p/10200808.html
Copyright © 2020-2023  润新知