牛客网刷题总结(不断更新)

一.移位

​
    int a = 2; 
    cout << "常量 2 <<  2: " << (2 << 2) << endl;   //结果是8
    cout << "变量 a <<  2: " << (a << 2) << endl;   //结果是8
    cout << "常量 2 << 34: " << (2 << 34) << endl;  //结果是0
    cout << "变量 a << 34: " << (a << 34) << endl;  //结果是8
    
    int b = -2; 
    cout << "常量 -2 <<  2: " << (-2 << 2) << endl;   //结果是-8
    cout << "变量 b  <<  2: " << (b << 2) << endl;   //结果是-8
    cout << "常量 -2 << 34: " << (-2 << 34) << endl;  //结果是0
    cout << "变量 b  << 34: " << (b << 34) << endl;  //结果是-8


​

解释:

对于2<<34,是一个常数运算。编译器发现34>31(对于int32位,最大移动范围是31位),会直接得到结果0。

对于a<<34,含有变量的移位,汇编操作步骤是:34与31进行AND操作,结果为2(等价34%32=2)。即:0010左移两位。

二.结构体

  结构体类型的定义格式为:strcut 结构体名 {成员说明列表} ;
  结构体变量的定义有3种形式:

//----------------第一种------------------------------------

typedef struct 结构名

{

    类型 变量名;

    类型 变量名;

...

} 结构别名;

示例:
typedef struct init_Color
{
    int red;
    
    char pink;

}Color;     //struct init_Color等价于Color,也可以省略init_Color

Color cl;

cl.red=1;

cl.pink='P';

//-------------------第二种----------------------------------


struct 结构名
{

类型 变量名;

类型 变量名;

...

} 结构变量;

示例:

struct Color
{
    int red;

    char pink;

}cl;     //结构体类型是struct Color,变量名是cl

cl.red=1;

cl.pink='P';



//-------------------------第三种-----------------------------------


//定义一个无名称的结构体类型的同时定义结构体变量

struct
{
   
     int red;

     char pink;

}cl;//这样写的优点就是简单,缺点就是由于没有结构体名,后面无法用该结构定义新的变量。


cl.red=1;

cl.pink='P';

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值