<<=在c++中什么意思

 我来答
veket_linux
推荐于2018-03-04 · TA获得超过4092个赞
知道大有可为答主
回答量:3809
采纳率:0%
帮助的人:4481万
展开全部
例如
c<<=2
就是 c=c<<2
把c左移2位得到的值 给 c

再如 a = 2
c<<=a + 3
+ 的优先级比<<=高
即c = c<<(a+3)
即c = c<< 5

C语言运算符优先级 详细列表
http://www.slyar.com/blog/c-operator-priority.html
国外的那些事
2011-10-13 · 超过29用户采纳过TA的回答
知道答主
回答量:117
采纳率:0%
帮助的人:66.3万
展开全部
位运算。。计算机都是二进制的嘛~左边有两个箭头说明向左移一位也就是在原来的基础上乘以2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
闷骚帝帝
2018-03-29
知道答主
回答量:9
采纳率:0%
帮助的人:8634
展开全部
/**
* @找到表头往后的第一个可用位置的指针
*/
void findAddPos(){
if(head->next->cardNo!=0||head->next==head){
addPos=head;
return;
}

//if(addPos==head||addPos->next==head) return;

Card * temp=head->next;

while(temp->next!=head){

if(temp->cardNo+1!=temp->next->cardNo){
break;
}
temp=temp->next;
}
Card* temp1=head;
cout<<"findAddPos"<<endl;
do{
cout<<temp1->cardNo<<" ";
temp1=temp1->next;
}
while(temp1!=head);

addPos=temp;
}
/**
找到指定卡号的卡
*/
Card * findAppointedCard( int cardNo){
Card * temp=head->next;

while(temp!=head&&temp->cardNo!=cardNo){
temp=temp->next;
}
cout<<"find the appointed "<<temp->cardNo;
return temp;
}
/**
销毁指定卡号的卡
*/
void destroyAppointedCard(int cardNo){
Card * temp=findAppointedCard(cardNo);
cout<<"card will be deleted "<<temp->cardNo<<endl;
if(temp==head){
return;
}
cout<<"prev is "<<temp->prev->cardNo<<endl;
cout<<"next is"<<temp->next->cardNo<<endl;
cout<<"card was deleted "<<temp->cardNo<<endl;
//Card * prev=temp->prev;
//_ListDel((TListHead*)(temp->prev),(TListHead*)(temp->next));
Card * prev=temp->prev;
Card * next=temp->next;
next->prev=prev;
prev->next=next;
// ptNext->prev = ptPrev;
//ptPrev->next = ptNext;
temp->prev=NULL;
temp->next=NULL;
/**
Card* temp1=head;
do{
cout<<temp1->cardNo<<" ";
temp1=temp1->next;
}
while(temp1!=head);
*/
cardsNum[4]-=1;
cardsNum[temp->type]-=1;

free(temp);
findAddPos();

}
/*
@ 开卡,分配卡号和卡信息
@ 入参:enCard,卡类型; charge: 充值
@ 出参: cardNo, 分配的卡号
@ 返回值: EN_RETURN_SUCC,分配成功; EN_RETURN_CARD_OVERLOW, 分配失败;
*/
EN_RETURN_CODE AssignCard(unsigned int &cardNo, EN_CARD_TYPE enCard, unsigned int charge)
{
//单次充值超过999元,直接返回错误
if(charge > MAX_BALANCE){
return EN_RETURN_RECHARGE_OVERFLOW;
}
//办卡数量超过99张,直接返回错误
if(cardsNum[4]>=MAX_CARD_NUM){
return EN_RETURN_CARD_OVERLOW;
}
Card * temp=(Card *)malloc(sizeof(Card));
temp->balance=charge;
temp->type=enCard;

if(ListEmpty((TListHead*)head)){
ListAddHead((TListHead*)temp,(TListHead*)head);
temp->cardNo=0;
addPos=temp;
}else{

//插在addPos后面
ListAddHead((TListHead*)temp,(TListHead*)(addPos->next));
if(addPos!=head){
temp->cardNo=addPos->cardNo+1;
}
else{
temp->cardNo=0;
}
}

cardNo=temp->cardNo;

Card * temp1=head;

do{
cout<<temp1->cardNo<<" ";
temp1=temp1->next;

}
while(temp1!=head);

//需要找到可以插入的最小位置,考虑到单程卡可注销
findAddPos();

cardsNum[enCard]+=1;

cardsNum[4]+=1;
return EN_RETURN_SUCC;
}
/*
@ 卡扣费
@ 入参:cardNo,卡号; enCard, 卡类型; deductPrice, 扣费票价
@ 出参: balance, 扣费后的余额
@ 返回值: EN_RETURN_SUCC,成功; EN_RETURN_INVALID_CARD, EN_RETURN_BALANCE_NOT_ENOUGH, 失败;
*/
EN_RETURN_CODE DeductCard(unsigned int cardNo, EN_CARD_TYPE enCard, unsigned int deductPrice, unsigned int &balance)
{
Card *card = findAppointedCard(cardNo);
if (card == NULL) {
return EN_RETURN_INVALID_CARD;
}
EN_CARD_TYPE cardType;
//获取目前卡余额
GetCardInfo(cardNo, balance, cardType);
if (balance < deductPrice)
{
return EN_RETURN_BALANCE_NOT_ENOUGH;
}
balance = balance - deductPrice;
//消费
//consume[4]+=deductPrice;
//consume[enCard]+=deductPrice;

card->balance = balance;
if (enCard == EN_CARD_TYPE_SINGLE)
{
//注销
destroyAppointedCard(cardNo);
}
else if (balance < 20)
{
return EN_RETURN_BALANCE_TOO_LOW;
}

return EN_RETURN_SUCC;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雅啊黑12
2010-01-16 · TA获得超过3312个赞
知道小有建树答主
回答量:727
采纳率:0%
帮助的人:494万
展开全部
按位取反

10 00 01 10

取反后为

01 11 10 01

-----------------华丽丽的补充答案分割线----------

看来得详细给你分析一下数字的机内表示和机内存储方式。
你最好把你那个a的具体值是多少、类型是什么说一下。

对于最常见的32位有符号整型数,机内长度应该为4个Byte32位,且最高位表示符号为,0为正,1为负,因此1230应该表示为:

0000 0000 0000 0000 0000 0100 1100 1110

方便起见一半用十六进制表示

0x00 00 04 CE

按位取反后成为:

1111 1111 1111 1111 1111 1011 0011 0001 : 0xFFFFFB31

并不是-1230,而是-2147482417

如果是uint_8,即无符号8位整型:

00 00 10 00 (8)

按位取反后成为:

11 11 01 11( 247 而不是-8)

总之这个操作要根据对象具体分析。如果是浮点数更复杂。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
肖婷0
2011-10-13 · TA获得超过237个赞
知道答主
回答量:250
采纳率:0%
帮助的人:231万
展开全部
左移运算符
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式