zoukankan      html  css  js  c++  java
  • 【C++ 学习笔记】 一些奇特的语法和指令

    C++中有一些系统的语法和一些特有的指令,挺可爱的,想记下来。

    1. 逗号的方便用法

          逗号在C++中表示,下面代码中第一行的用法大家应该很熟悉,a和b可以并列写是将a,b定义成了同一类型。而第二行的用法便很少见了。居然可以在赋值中用逗号隔开两个同类型的变量的赋值语句。崇拜下。

    int a = 0, b = 0;
    a = 10, b = 10;
    std::cout<<a<<"  "<<b<<std::endl;

           语法灵感来源:《STL 源码剖析 229页》

    2. 使用汇编语言

           在C++中可以使用汇编语言,只需要在前面加上关键词 __asm 即可(两条下划线)。单条语句如:__asm mov

    3. 读取CPU时间戳代码  --- http://www.cppblog.com/gcs8cn/archive/2010/06/09/117469.html

          在Pentium以上的CPU提供了一条机器指令:RDTSC(Read Time Stamp Counter)。可以用这条指令来读取CPU上的时间戳。

    4. 指定内置类型的位数

          如果你用的只是小额数字,那么计算机给的那些位自然是没有用了,怎么样来处理呢?可以用一个方法:在struct内指定内置类型的位数。如下面例子所示,便是构造了一个字的数据,其中前四位给了int b,后四位给了char a。有点吃大锅饭的感觉。

          以前固定的char是1个字节,int是一个字,long是一个通用寄存器,double是两个字背得很幸苦吧~原来内置类型也可以被指定位数的,不过当然要在struct结构里!格式如下所示:

    struct {
        unsigned char a:4;          // 指定无符号char类型的变量a占4个位
        int b:4;                    // 指定int类型的变量b占8个位
    };

           既然可以这么指定,那么在内存中是怎么使用的呢?我们输出看看(使用union可以输出,因为int i和struct的类型共用内存):

    void main()
    {
         union test
        {
          struct
         {
              unsigned char a:4;
              unsigned char b:4;
              unsigned char c:4;
         } bit;
    
          int i;
        } data;
    
    
          data.i = 0;
          data.bit.a = 1;
          data.bit.b = 2;
          data.bit.c = 3;
          printf("0x%04x\n",data.i );
    }

          结果:0x0321

          即四个字节4bits给了a,4bits给了b,4bits给了c:  0000 0011 0010 0001 (红色为a,绿色为b,蓝色为c)。

          当然其内存的分配也不是完全依照值的大小从后往前排的,如:

    struct
    {
        unsigned char a:2;
        unsigned char b:3;
        unsigned char c:4;
    }bit;

          结果:0x0309
          即: 0000 0011 0000 1001 (红色为a,绿色为b,蓝色为c)。也就是说内存的配置还是根据现在的字节进行优化的。

  • 相关阅读:
    取出某个月有几天
    重建索引时,一些数值
    java代理概念
    java内部类和静态内部类
    Lamdba表达式的代码使用讲解
    java 中Vector的使用详解
    mysql 安装失败 start service执行不下去
    Mysql中ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8怎么转换为sql sever2008的代码
    通过命令行发送邮件
    Servlet开发总结(一)
  • 原文地址:https://www.cnblogs.com/xiaoka/p/2664606.html
Copyright © 2011-2022 走看看