14个回答
展开全部
是运算符号。
比特右移(>>)运算符可以是算术(左端补最高有效位)或是逻辑(左端补 0)位移。
例如,将 11100011 右移 3 比特,算术右移后成为 11111100,逻辑右移则为 00011100。因算术比特右移较适于处理带负号整数,所以几乎所有的编译器都是算术比特右移。
运算符的优先级从高到低大致是:单目运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符(=)和逗号运算符。
扩展资料
右移运算符(>>)规则:
按二进制形式把所有的数字向右移动对应位移位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。
计算过程:
11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 0010。转换为十进制是2。
数学意义:右移一位相当于除2,右移n位相当于除以2的n次方。
参考资料来源:百度百科-C语言
展开全部
->是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”.
举个例子:
struct
Data
{
int
a,b,c;
};
/*定义结构体*/
struct
Data
*
p;/*定义结构体指针*/
struct
Data
A
=
{1,2,3};/*声明变量A*/
int
x;/*声明一个变量x*/
p
=
&A
;
/*让p指向A*/
x
=
p->a;/*这句话的意思就是取出p所指向的结构体中包含的数据项a赋值给x*/
/*由于此时p指向A,因而
p->a
==
A.a,也就是1*/
对于一开始的问题
p
=
p->next;这应该出现在C语言的链表,这里的next应该是一个与p同类型的结构体指针,其定义格式应该是:
struct
Data
{
int
a;
struct
Data
*
next;
};/*定义结构体*/
…………
main()
{
struct
Data
*
p;/*声明指针变量p*/
……
p
=
p->next;/*将next中的值赋给p*/
}
链表指针是C语言的一个难点,但也是重点,学懂了非常有用。要仔细讲就必须先讲变量、指针。
什么是变量?所谓变量,不要浅显的认为会变得量就是变量。套用我们院长的问话:“教室变不变?”变,因为每天有不同的人在里面上课,但又不变,因为教室始终在那,没有变大或变小。这就是变量:有一个不变的地址和一块可变的存储空间。正常情况下,我们只看到变量这个房间里面的东西,也就是其内容,但不会关注变量的地址,但是C语言的指针,就是这个房间的地址。我们声明变量就相当于盖了间房子存放东西,我们可以直接观看房子里的东西,而声明指针,就是相当于获得了一个定位器,当用指针指向某个变量时,就是用指针给变量定位,以后我们就可以用指针找到他所“跟踪”的变量并可以获得里面的内容。
那结构体呢?结构体就相当于是有好几个房子组成的别墅,几个房子绑定在一起使用。假设现在有很多这种别墅分布在一个大迷宫里,每间别墅里都有一间房子。里面放了另一个别墅的位置信息,现在你手拿定位器找到了第一栋别墅,从里面得到了你想要的东西(链表的数据部分),然后把下一栋别墅的位置计入你的定位器(p
=
p->next),再走向下一栋别墅……如此走下去,知道走到某地下一栋别墅信息没有了(p->next
==
NULL),你的旅行结束。这就是链表一次遍历的过程。现在你能明白
p=p->next的含义了吧!
写了这么多。希望你能明白。
如果想学好c和C++,链表和指针必须熟练掌握!
举个例子:
struct
Data
{
int
a,b,c;
};
/*定义结构体*/
struct
Data
*
p;/*定义结构体指针*/
struct
Data
A
=
{1,2,3};/*声明变量A*/
int
x;/*声明一个变量x*/
p
=
&A
;
/*让p指向A*/
x
=
p->a;/*这句话的意思就是取出p所指向的结构体中包含的数据项a赋值给x*/
/*由于此时p指向A,因而
p->a
==
A.a,也就是1*/
对于一开始的问题
p
=
p->next;这应该出现在C语言的链表,这里的next应该是一个与p同类型的结构体指针,其定义格式应该是:
struct
Data
{
int
a;
struct
Data
*
next;
};/*定义结构体*/
…………
main()
{
struct
Data
*
p;/*声明指针变量p*/
……
p
=
p->next;/*将next中的值赋给p*/
}
链表指针是C语言的一个难点,但也是重点,学懂了非常有用。要仔细讲就必须先讲变量、指针。
什么是变量?所谓变量,不要浅显的认为会变得量就是变量。套用我们院长的问话:“教室变不变?”变,因为每天有不同的人在里面上课,但又不变,因为教室始终在那,没有变大或变小。这就是变量:有一个不变的地址和一块可变的存储空间。正常情况下,我们只看到变量这个房间里面的东西,也就是其内容,但不会关注变量的地址,但是C语言的指针,就是这个房间的地址。我们声明变量就相当于盖了间房子存放东西,我们可以直接观看房子里的东西,而声明指针,就是相当于获得了一个定位器,当用指针指向某个变量时,就是用指针给变量定位,以后我们就可以用指针找到他所“跟踪”的变量并可以获得里面的内容。
那结构体呢?结构体就相当于是有好几个房子组成的别墅,几个房子绑定在一起使用。假设现在有很多这种别墅分布在一个大迷宫里,每间别墅里都有一间房子。里面放了另一个别墅的位置信息,现在你手拿定位器找到了第一栋别墅,从里面得到了你想要的东西(链表的数据部分),然后把下一栋别墅的位置计入你的定位器(p
=
p->next),再走向下一栋别墅……如此走下去,知道走到某地下一栋别墅信息没有了(p->next
==
NULL),你的旅行结束。这就是链表一次遍历的过程。现在你能明白
p=p->next的含义了吧!
写了这么多。希望你能明白。
如果想学好c和C++,链表和指针必须熟练掌握!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
回答的好请采纳哦!!!
这是C语言中的“右移运算符”。一般情况下,他是按位操作。
特点:1.双目运算符,就像+、-、*、/一样,格式为(数1)>>(数2)
2.数1是被操作数,如被减数、被除数等;数2是右移位数。
3.优先级低,结合性:从左向右运算
如:8>>1=?表示将被移数向右移动1位
如何操作?
1.化十进制数为(注意了)对应的二进制数,对应指格式对应
2.通通右移,不足补0
3.化为十进制数
举例:short int a=8;a=a>>1;
1.a=0 000 1000
2.右移一位后:a= 0 000 100
3.补0:a=0 000 0100
4.化为十进制数:a=4
举例:int a=8;a=a>>1;
1.a=0 000 0000 0000 1000
2.右移一位后:a= 0 000 0000 0000 100
3.补0:a=0 000 0000 0000 0100
4.化为十进制数:a=4
这是C语言中的“右移运算符”。一般情况下,他是按位操作。
特点:1.双目运算符,就像+、-、*、/一样,格式为(数1)>>(数2)
2.数1是被操作数,如被减数、被除数等;数2是右移位数。
3.优先级低,结合性:从左向右运算
如:8>>1=?表示将被移数向右移动1位
如何操作?
1.化十进制数为(注意了)对应的二进制数,对应指格式对应
2.通通右移,不足补0
3.化为十进制数
举例:short int a=8;a=a>>1;
1.a=0 000 1000
2.右移一位后:a= 0 000 100
3.补0:a=0 000 0100
4.化为十进制数:a=4
举例:int a=8;a=a>>1;
1.a=0 000 0000 0000 1000
2.右移一位后:a= 0 000 0000 0000 100
3.补0:a=0 000 0000 0000 0100
4.化为十进制数:a=4
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
“>>”在C语言中是右移的意思,
“<<”则是左移的意思。
比如:
PORTD |= (1<<4);//把1左移4位后(值为0x10)赋给PORTD。
//也就是让PORTD的第5个输出I/O输出为高电平的意思。
“<<”则是左移的意思。
比如:
PORTD |= (1<<4);//把1左移4位后(值为0x10)赋给PORTD。
//也就是让PORTD的第5个输出I/O输出为高电平的意思。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个是这个是右移符号
例如a>>b 就是a右移b位
例子:
a=5,a>>2
需将5,化为8位二进制,00000101
右移的意思就是把最右边的两位直接抹去,然后在最左边增加2个0
移去多少位就加多少个0,然后再转为十进制就是移动结果
例如a>>b 就是a右移b位
例子:
a=5,a>>2
需将5,化为8位二进制,00000101
右移的意思就是把最右边的两位直接抹去,然后在最左边增加2个0
移去多少位就加多少个0,然后再转为十进制就是移动结果
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询