zoukankan      html  css  js  c++  java
  • C专家编程(1)

    这一系列主要记录阅读《C专家编程》中,需要注意的一些内容。

    寻常算术转换(P22-24)

    P23:当执行算数运算时,操作数的类型如果不同,就会发生转换。数据类型一般朝着浮点精度更高、长度更长的方向转换,整型数如果转换为signed不会丢失信息,就转换为signed,否则转换为unsigned。

    #define TOTAL_ELEMENTS (sizeof(array)/sizeof(array[0]))
    
    int d=-1;
    if (d <  TOTAL_ELEMENTS -2)
        xxx;  // 实际执行不到 
    

    sizeof()返回类型为无符号数,比较时d被升级为unsigned int类型。

    解决方法是对TOTAL_ELEMENTS强制类型转换为int,即

    if (d <  (int)TOTAL_ELEMENTS -2)
    

    符号“重载”(P37-38)

    许多操作符在不同的场景下会有不同的意义,如staticvoid*等。

    另外,还有一些符号具有多个容易混淆的意思。

    p = N * sizeof * q;  // (1)
    apple = sizeof(int) * p;  // (2)
    

    (1)中,第一个*表示乘法,而第二个*表示指针,sizeof操作符把q指向的内容作为操作数,返回该对象的类型的字节数(sizeof的操作数是变量时可以不加括号)。

    (2)中,表示把int的长度乘以p,而不是把未知类型的指针p强制转换成int,然后进行sizeof操作。

    欢迎访问我的个人站点:https://www.maxiaowei.tech
  • 相关阅读:
    leecode-数组-27Remove Element-java
    win7未在本地计算机注册microsoft.jet.oledb.4.0+inetmgr
    VS2013+opencv2.4.9+MFC
    adb远程调试
    Service,测试
    symfony-表单学习
    Doctirne---查询更新等操作
    Doctrine2-完整创建数据库
    Doctrine2-基础概念
    twig模板基本学习
  • 原文地址:https://www.cnblogs.com/maxiaowei0216/p/14247474.html
Copyright © 2011-2022 走看看