• 【c++ primer读书笔记】【第4章】表达式


    1.  左值和右值

    当一个对象被用作右值的时候,用的是对象的值(内容),当对象被用作左值的时候,用的是对象的身份(在内存中的位置)

    2.算术运算符

    c++新标准中,(-m)/n和m/(-n)都等于-(m/n),m%(-n)等于m%n,(-m)%n等于-(m%n)

    cout<<21/6<<endl;   //结果是3
    cout<<21/-6<<endl;  //结果是-3
    cout<<-21/-6<<endl; //结果是3
    
    cout<<21%6<<endl;   //结果是3
    cout<<21%-6<<endl;  //结果是3
    cout<<-21%-6<<endl; //结果是-3

    3. 递增递减运算符:前置版本和后置版本

    int i=0,j;
    j=++i;   //j=1,i=1:前置版本得到递增之后的值
    j=i++;   //j=1,i=2:后置版本得到递增之前的值

    前置版本把值加1后直接返回改变了的运算对象,后置版本需要将原始值存储下来,因此如果不需要修改前的值,后置版本的操作是一种浪费,最好使用前置版本的递增递减运算符

    4.  sizeof运算符

    sizeof运算符返回一条表达式或一个类型名字所占的字节数,满足右结合律

    在sizeof的运算对象中解引用一个无效指针是一种安全的行为,因为指针实际上没有真正被使用

    int *p
    sizeof *p; //正确,

    对数组执行sizeof运算得到整个数组所占空间的大小,sizeof运算不会把数组转换成指针来处理。

    int ia[]={1,2,3,4};
    cout<<sizeof(ia)<<endl; //如果一个int占4个字节,则输出16

    对string对象或vector对象执行sizeof运算只返回该类型固定部分的大小,不会计算对象中的元素占了多少空间

    string str("abcd");
    cout<<sizeof(str)<<endl; //在我的机器上输出了28

     

  • 相关阅读:
    网络科学导论【第二章】读书脑图
    稳定匹配
    Machine learning(3-Linear Algebra Review )
    Machine learning(2-Linear regression with one variable )
    Machine learning(1-Introduction)
    1710. Maximum Units on a Truck (E)
    0729. My Calendar I (M)
    0105. Construct Binary Tree from Preorder and Inorder Traversal (M)
    0746. Min Cost Climbing Stairs (E)
    0128. Longest Consecutive Sequence (M)
  • 原文地址:https://www.cnblogs.com/ruan875417/p/4495578.html
Copyright © 2020-2023  润新知