C语言中“>>=,<<=,&=,^=,|=”分别表示什么意思?请举例说明

作者&投稿:桓录 (若有异议请与网页底部的电邮联系)
C语言中“>>=,<<=,&=,^=,|=”分别表示什么意思?请举例说明~

这些是位运算
>>= 右移
int x=8;//1000
x>>=2;//0010 x=2
<<=左移 跟上面的一样 只不过向左位移 省略……
&=位与
int x=11;//1011
x&=7;0011 &0111 结果 x=3 0011 在二进制上做与运算
^=异或
int x=3;//0011
x^=7;0011^0111 结果 x=4 0100 比较两个位不相同的得1
|=位或
int x=1;//0001
x|=6;//0001 | 0110 结果x=7 0111 位的或运算 两个位只要有一个是1就得1

C语言中,算术运算符“%”代表模(取余)运算,“++”代表变量自增运算,“--”代表变量自减运算。
1、模运算“%”
“模”是“Mod”的音译,模运算多应用于程序编写中。 Mod的含义为求余。模运算在数论和程序设计中都有着广泛的应用,从奇偶数的判别到素数的判别,从模幂运算到最大公约数的求法,从孙子问题到凯撒密码问题,无不充斥着模运算的身影。
C语言用“%”代表模运算,例如7%2=1、8%5=3等。
2、自增运算“++”
C语言用“++”代表自增运算,分为前缀自增和后缀自增,其效果均为自身变量值+1。前缀自增例如“a=5;b=++a;”,则运行结果是“a=6,b=6”。后缀自增例如“a=5;b=a++;”,则运行结果是“a=6,b=5”。
3、自减运算“--”
C语言用“--”代表自减运算,分为前缀自减和后缀自减,其效果均为自身变量值-1。前缀自减例如“a=5;b=--a;”,则运行结果是“a=4,b=4”。后缀自减例如“a=5;b=a--;”,则运行结果是“a=4,b=5”。

扩展资料:
C语言常用运算符:
+:加法
-:减法
<<:位左移
>>:位右移
<:小于
<=:小于等于
>:大于
>=:大于等于
+=:加赋值运算
-=:减赋值运算
*=:乘赋值运算
/=:除赋值运算
%=:模赋值运算
参考资料来源:百度百科-C语言运算符

1、C语言中的 >>= 意思为:右移后赋值

代码示例为:

x = 8; 

x >>= 3; 

右移后结果为:00000000 00000000 00000000 00000001

2、C语言中的 <<= 意思为:左移后赋值

代码示例为:

x = 8;

x <<= 3; 

左移后赋值结果为:00000000 00000000 00000000 01000000

3、C语言中的 &= 意思为:按位与后赋值

代码示例为:

x = 0x02; 

x &= 0x01; 

按位与后的结果为:0x00

4、C语言中的 ^= 意思为:按位异或后赋值

代码示例为:

x = 0x02; 

x ^= 0x01; 

按位异或的结果为:0x03 等同于0011

5、C语言中的 |= 意思为:按位或后赋值

代码示例为:

x = 0x02; 

x  |= 0x01;

按位或的结果为:0x03 等同于0011

扩展资料:

1、C语言运算符的优先级顺序

运算符的优先级从高到低大致是:单目运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符(=)和逗号运算符。

2、比特右移运算符的位移

比特右移(>>)运算符可以是算术(左端补最高有效位)或是逻辑(左端补 0)位移。例如,将 11100011 右移 3 比特,算术右移后成为 11111100,逻辑右移则为 00011100。因算术比特右移较适于处理带负号整数,所以几乎所有的编译器都是算术比特右移。

参考资料来源:百度百科-C语言



复合赋值。a>>=b相当于 a = a >> b; 以此类推。

a>>=b 表示把二进制a右移b位,比如:

即:

结果是1,再把右移结果赋值给a, 即最后a=1。

<<= 同上,只不过是左移赋值。

&= 是按位与之后赋值,^=是按位异或之后赋值,|=是按位或之后赋值。与,或以及异或的操作很简单:

<<= 同上,只不过是左移赋值。

&= 是按位与之后赋值,^=是按位异或之后赋值,|=是按位或之后赋值。与,或以及异或的操作很简单:

拓展资料

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。



复合赋值。a>>=b相当于 a = a >> b; 以此类推。

a>>=b 表示把二进制a右移b位,比如:

a = 8;
a >>= 3;

即:

二进制8: 00000000 00000000 00000000 00001000
右移3位: 00000000 00000000 00000000 00000001

结果是1,再把右移结果赋值给a, 即最后a=1。

另外,这是算术右移,如果右移的数是负数,用最高位符号位1来填充左边。你可以参考百度算术右移与逻辑右移。


<<= 同上,只不过是左移赋值。


&= 是按位与之后赋值,^=是按位异或之后赋值,|=是按位或之后赋值。与,或以及异或的操作很简单:

  101010         101010        101010
& 011100       | 011100      ^ 011100
---------     ----------    ----------
  001000         111110        110110


a = 0010(0x02)
a >>= 1; (a 右移1位并把右移的结果重新赋值给a) 此时a = 0001(0x01);
a <<= 1;(a左移1位并把左移的结果重新赋值给a) 此时 a = 0100(0x04);
a &= 0x01;( a与0x01 按位与,并把按位与的结果重新赋值给a)。此时a = 0x0;
a |= 0x01;( a与0x01 按位或,并把按位或的结果重新赋值给a)。此时a = 0011(0x03);
a ^= 0x01;( a与0x01 按位异或,并把按位异或的结果重新赋值给a)。此时a = 0x03;(异或的意思就是,该位均为相同的则该位结果为0,该位均为不同的则该位结果为1)

补充一个骚操作,>>=用作除法取平均值。
假如for(;i<8;i++);i>>=3;结果为1,所以>>=3相当于除以8。
原理:我们知道,十进制下,每向每向右移1位,结果相当于除以10,在二进制下就相当于除以2,所以上面的代码相当于8/2^3,这个方法只能够用于求2的N次方(比如2、4、8、16、32……)的平均值,优点是效率比除法快(在没有硬件除法器的单片机上,和编译器优化也有关)。
当然,反过来,向左移位就是乘法了。


C语言中“?”和“:”是什么意思?
“?”在C语言中表示疑问。“:”在C语言中表示判断的结果选择。【例子】(a>b)?解释:判断表达式是否能够通过,如果能通过,那么说明才能进行之后的操作,如果不能通过,就选择后一种结果。(a>b)?y:n 解释:如果A大于B,那么选择Y的结果,如果A小于B,那么选择N的结果。

C语言中‘\\n'是什么意思
\\n' 的意思是:回车换行。将当前位置移到下一行的开头。1、\\n是换行符,通常在输出中用作格式控制;\\n'就是一个转义字符,其意义是“回车换行”。2、转义字符以反斜线"\\"开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。3、一般放到printf()这类...

C语言中->是什么意思啊?
“->”是一个整体,它是用于指向结构体子数据的指针,用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”。问题中的p=p->next ,意思是将p指向的一个结构体实例中的自数据next赋值给p。

c语言"a>>=1"是什么意思?
c语言,a>>=1是什么意思。 对于非负整数a,它等同于: a=a>>1; 也等同于: a=a\/2;在C语言中"c=a>b?a:b;"这段程式码是什么意思? 如果a>b成立,则c=a;否则c=b c语言 printf("%2u>",i+1)是什么意思? %2u的意思是输出的结果总共占两位,按照不分正负的十进位制的...

c语言中“:”和“?”分别是什么意思?
是一个语句,判断一个表达式的真假来执行两条代码 比如 int a=9,b=8;a>b?a=8:b=9; \/\/就是这句 相当于if语句吧,问号前面的表达式为真的时候执行a=8,否则b=9;明白了吧。

c语言中'\\'是什么意思啊?
C语言中,一个ASCII字符用单引号括起来,表示单字符常量,如:'a', 'A','0','9'等 C中定义了一些字母前加"\\"来表示常见的那些不能显示的ASCII字符,如\\0,\\t,\\n等,称为转义字符(因为"斜杠"后面的字符,都不是它本来的ASCII字符意思了)。注意:斜杠是“\\”(反斜杠),不是"\/"所有的...

c语言中%5d是什么意思?
C语言中,“%5d”是的意思是以整形来格式化参数,并且当整数字符数少于5个情况下,多格式化一定数量空格来填充,以使得空格和整数所用字符数的总和达到至少5个。C语言中,“%5d”一般用于printf函数和sprintf函数。它们格式化字符串时,可以指定串的格式,在格式串内部使用一些以“%”开头的格式说明符来...

c语言中的?和:是什么运算符?
C语言里面?、:是三木运算符,其中?用来判断条件的真假,:用来根据判断结果决定取值。如(a<b)?a:b"是一个"条件表达式",如果a

c语言中:的作用
取决于在scanf中使用还是在printf中使用。在scanf中使用,则添加了*的部分会被忽略,不会被参数获取。例如:int a,b;char b[10];scanf("%d%*s",&a,b);输入为:12 abc那么12将会读取到变量a中,但是后面的abc将在读取之后抛弃,不赋予任何变量(例如这里的字符数组b)在printf中使用,表示用后面...

c语言中'1'和1的区别
一、数据类型不同 1、'1':是定义的字符型变量,代表字符1。2、1:是定义的整型变量,代表数字1。二、占用内存空间不同 1、'1':在内存堆栈中占用一个字节。2、1:在内存堆栈中占用四个字节。三、定义规则不同 1、'1':定义的时候使用长度限制限制的是实际存储长度。2、1:定义的时候限制的是...

惠东县14789536531: C语言l里 &&与&的区别?还有X=(y=4,z=16,k=32)什么意思啊?x=(y==z)呢 -
掌竖硫酸: 展开全部&& 是与运算,例:if(x==1 && y==1){执行语句} 当x,y都等于1时执行括号内语句.&是取地址的意思,例:scanf("%d",&a); 输入一个整数a,存放到a对应的内存地址 X=(y=4,z=16,k=32)和 x=(y==z) 我没见过,一般你也用不到

惠东县14789536531: C语言中"&&"的意思和用法? -
掌竖硫酸: &是取地址符,就是获取地址,比如 int a; 那么 &a,就是获取 a 的地址, &&是“且”的意思,比如 int b; 那么 b>2&&b<3 就是b>2并且b<3

惠东县14789536531: C语言中<,>是什么意思??能具体举例吗? -
掌竖硫酸: 取地址运算符

惠东县14789536531: c语言中/=是什么意思
掌竖硫酸: /=是复合赋值运算符,num/=10:相当于num=num/10凡是二元(二目)运算符,都可以与赋值符一起组合成复合赋值符.C 语言规定可以使用10种复合赋值运算符.即: +=,-=,*=,/=,%=,&lt;&lt;=,&gt;&gt;=,&amp;=,^=,|= C 采用这种复合运算符,一是为了简化程序,使程序精练,二是为了提高编译效率(这样写法与“逆波兰”式一致,有利于编译,能产生质量较高的目标代码).

惠东县14789536531: C语言里的&&是什么意思? -
掌竖硫酸: 在C语言中&&符号表示与,即对前后操作数进行与操作,前后操作数都是真的时候表达式的值为真,其他情况下表达式的值为假,需要注意的是,在C语言的&&表达式中,左操作数为假的话,就不会再计算右操作数了. 补充:C语言中,数字0表示假,其他都表示真.

惠东县14789536531: &在c语言中什么意思 -
掌竖硫酸: 主要有两个意思: 1. 取地址符,用在指针表达式或输出变量地址时 例如 int a; &a就是表示变量a在内存中地址 2. 二进制位与位运算符 1&1=1 0&0=0 拓展资料:C语言主要特点: 1. C语言是高级语言.它把高级语言的基本结构和语句与低级...

惠东县14789536531: c语言表示&&和||各表示什么 -
掌竖硫酸: &&表示“与”,||表示“或”.

惠东县14789536531: 在c语言里&gt;=是什么意思 -
掌竖硫酸: 大于等于 和数学里面一样的.

惠东县14789536531: 用C语言中<,>是什么意思
掌竖硫酸: 不好意思 我学的是易 帮不了你了

惠东县14789536531: C语言中i>=2<6是什么意思
掌竖硫酸: &gt;=和&lt;优先级相同,结合性从左到右,所以原式等价于: (i&gt;=2)&lt;6 即先判断i&gt;=2是否成立,如果成立,(i&gt;=2)的值就是1,否则它的值就是0,然后再用这个1或者0与6比较.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网