C语言中“>>=,<<=,&=,^=,|=”分别表示什么意思?请举例说明 C语言中算术运算符%,++,— —,都是什么意思?能举例子说...

C\u8bed\u8a00\u4e2d\u201c>>=,<<=,&=,^=,|=\u201d\u5206\u522b\u8868\u793a\u4ec0\u4e48\u610f\u601d\uff1f\u8bf7\u4e3e\u4f8b\u8bf4\u660e

\u8fd9\u4e9b\u662f\u4f4d\u8fd0\u7b97
>>= \u53f3\u79fb
int x=8;//1000
x>>=2;//0010 x=2
<<=\u5de6\u79fb \u8ddf\u4e0a\u9762\u7684\u4e00\u6837 \u53ea\u4e0d\u8fc7\u5411\u5de6\u4f4d\u79fb \u7701\u7565\u2026\u2026
&=\u4f4d\u4e0e
int x=11;//1011
x&=7;0011 &0111 \u7ed3\u679c x=3 0011 \u5728\u4e8c\u8fdb\u5236\u4e0a\u505a\u4e0e\u8fd0\u7b97
^=\u5f02\u6216
int x=3;//0011
x^=7;0011^0111 \u7ed3\u679c x=4 0100 \u6bd4\u8f83\u4e24\u4e2a\u4f4d\u4e0d\u76f8\u540c\u7684\u5f971
|=\u4f4d\u6216
int x=1;//0001
x|=6;//0001 | 0110 \u7ed3\u679cx=7 0111 \u4f4d\u7684\u6216\u8fd0\u7b97 \u4e24\u4e2a\u4f4d\u53ea\u8981\u6709\u4e00\u4e2a\u662f1\u5c31\u5f971

C\u8bed\u8a00\u4e2d\uff0c\u7b97\u672f\u8fd0\u7b97\u7b26\u201c%\u201d\u4ee3\u8868\u6a21\uff08\u53d6\u4f59\uff09\u8fd0\u7b97\uff0c\u201c++\u201d\u4ee3\u8868\u53d8\u91cf\u81ea\u589e\u8fd0\u7b97\uff0c\u201c--\u201d\u4ee3\u8868\u53d8\u91cf\u81ea\u51cf\u8fd0\u7b97\u3002
1\u3001\u6a21\u8fd0\u7b97\u201c%\u201d
\u201c\u6a21\u201d\u662f\u201cMod\u201d\u7684\u97f3\u8bd1\uff0c\u6a21\u8fd0\u7b97\u591a\u5e94\u7528\u4e8e\u7a0b\u5e8f\u7f16\u5199\u4e2d\u3002 Mod\u7684\u542b\u4e49\u4e3a\u6c42\u4f59\u3002\u6a21\u8fd0\u7b97\u5728\u6570\u8bba\u548c\u7a0b\u5e8f\u8bbe\u8ba1\u4e2d\u90fd\u6709\u7740\u5e7f\u6cdb\u7684\u5e94\u7528\uff0c\u4ece\u5947\u5076\u6570\u7684\u5224\u522b\u5230\u7d20\u6570\u7684\u5224\u522b\uff0c\u4ece\u6a21\u5e42\u8fd0\u7b97\u5230\u6700\u5927\u516c\u7ea6\u6570\u7684\u6c42\u6cd5\uff0c\u4ece\u5b59\u5b50\u95ee\u9898\u5230\u51ef\u6492\u5bc6\u7801\u95ee\u9898\uff0c\u65e0\u4e0d\u5145\u65a5\u7740\u6a21\u8fd0\u7b97\u7684\u8eab\u5f71\u3002
C\u8bed\u8a00\u7528\u201c%\u201d\u4ee3\u8868\u6a21\u8fd0\u7b97\uff0c\u4f8b\u59827%2=1\u30018%5=3\u7b49\u3002
2\u3001\u81ea\u589e\u8fd0\u7b97\u201c++\u201d
C\u8bed\u8a00\u7528\u201c++\u201d\u4ee3\u8868\u81ea\u589e\u8fd0\u7b97\uff0c\u5206\u4e3a\u524d\u7f00\u81ea\u589e\u548c\u540e\u7f00\u81ea\u589e\uff0c\u5176\u6548\u679c\u5747\u4e3a\u81ea\u8eab\u53d8\u91cf\u503c+1\u3002\u524d\u7f00\u81ea\u589e\u4f8b\u5982\u201ca=5;b=++a;\u201d\uff0c\u5219\u8fd0\u884c\u7ed3\u679c\u662f\u201ca=6\uff0cb=6\u201d\u3002\u540e\u7f00\u81ea\u589e\u4f8b\u5982\u201ca=5;b=a++;\u201d\uff0c\u5219\u8fd0\u884c\u7ed3\u679c\u662f\u201ca=6\uff0cb=5\u201d\u3002
3\u3001\u81ea\u51cf\u8fd0\u7b97\u201c--\u201d
C\u8bed\u8a00\u7528\u201c--\u201d\u4ee3\u8868\u81ea\u51cf\u8fd0\u7b97\uff0c\u5206\u4e3a\u524d\u7f00\u81ea\u51cf\u548c\u540e\u7f00\u81ea\u51cf\uff0c\u5176\u6548\u679c\u5747\u4e3a\u81ea\u8eab\u53d8\u91cf\u503c-1\u3002\u524d\u7f00\u81ea\u51cf\u4f8b\u5982\u201ca=5;b=--a;\u201d\uff0c\u5219\u8fd0\u884c\u7ed3\u679c\u662f\u201ca=4\uff0cb=4\u201d\u3002\u540e\u7f00\u81ea\u51cf\u4f8b\u5982\u201ca=5;b=a--;\u201d\uff0c\u5219\u8fd0\u884c\u7ed3\u679c\u662f\u201ca=4\uff0cb=5\u201d\u3002

\u6269\u5c55\u8d44\u6599\uff1a
C\u8bed\u8a00\u5e38\u7528\u8fd0\u7b97\u7b26\uff1a
+\uff1a\u52a0\u6cd5
-\uff1a\u51cf\u6cd5
<<\uff1a\u4f4d\u5de6\u79fb
>>\uff1a\u4f4d\u53f3\u79fb
<\uff1a\u5c0f\u4e8e
<=\uff1a\u5c0f\u4e8e\u7b49\u4e8e
>\uff1a\u5927\u4e8e
>=\uff1a\u5927\u4e8e\u7b49\u4e8e
+=\uff1a\u52a0\u8d4b\u503c\u8fd0\u7b97
-=\uff1a\u51cf\u8d4b\u503c\u8fd0\u7b97
*=\uff1a\u4e58\u8d4b\u503c\u8fd0\u7b97
/=\uff1a\u9664\u8d4b\u503c\u8fd0\u7b97
%=\uff1a\u6a21\u8d4b\u503c\u8fd0\u7b97
\u53c2\u8003\u8d44\u6599\u6765\u6e90\uff1a\u767e\u5ea6\u767e\u79d1-C\u8bed\u8a00\u8fd0\u7b97\u7b26

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璇█涓鐨勨% d鈥濅粈涔堟剰鎬?
    绛旓細1銆%d锛岃〃绀烘寜鏁村瀷杈撳嚭鍚庨潰缁欏嚭鐨勫彉閲忕殑鍊笺2銆%%d 锛岃繖灏变細琚媶鎴愪袱閮ㄥ垎鐪嬪緟锛屼竴鏄%%鈥濆湪C璇█涓灏辨槸杈撳嚭涓涓%鈥濓紝鑰屾槸鈥渄鈥濆氨鏄竴涓櫘閫氬瓧绗︼紝鎵浠ュ綋鈥%%d鈥濆湪涓璧锋椂锛屽叾鍚箟灏辨槸杈撳嚭鈥%d鈥濊繖涓や釜瀛楃銆3銆%%%d 锛3涓%鍦ㄤ竴璧凤紝杩涜鎷嗗垎鐨勮瘽锛%%浠h〃涓涓%鈥濆瓧绗︼紝鍚庨潰鐨%d鍙...
  • C璇█涓鈥淸 ]鈥濅唬琛ㄤ粈涔?
    绛旓細C璇█涓鈥淸 ]鈥濅唬琛ㄦ暟缁勩備緥濡傦細int a[6] 鍒欒〃绀篴鏄竴涓暱搴︿负6鐨勬暣褰㈡暟缁勶紝褰撲娇鐢ㄦ椂锛屼篃鍙互琛ㄧず鏁扮粍涓殑鍏冪礌 渚嬪 a[1]鍒欒〃绀轰笂闈㈡暟缁勪腑鐨勭浜屼釜鍏冪礌銆1銆丆璇█鏄竴闂ㄩ氱敤璁$畻鏈虹紪绋嬭瑷锛屽簲鐢ㄥ箍娉涖侰璇█鐨勮璁$洰鏍囨槸鎻愪緵涓绉嶈兘浠ョ畝鏄撶殑鏂瑰紡缂栬瘧銆佸鐞嗕綆绾у瓨鍌ㄥ櫒銆佷骇鐢熷皯閲忕殑鏈哄櫒鐮佷互鍙婁笉...
  • '1'鍦c璇█涓鏄粈涔堟剰鎬
    绛旓細1涓鸿浆涔夊瓧绗︼紝浠h〃鐨勬剰鎬濇槸鈥滄爣棰樺紑濮嬧濄傚湪C璇█涓锛屾墍鏈夌殑ASCII鐮侀兘鍙互鐢ㄢ溾濆姞鏁板瓧锛堜竴鑸槸8杩涘埗鏁板瓧锛夋潵琛ㄧず銆 鎵╁睍璧勬枡 鑰孋涓畾涔変簡涓浜涘瓧姣嶅墠鍔""鏉ヨ〃绀哄父瑙佺殑閭d簺涓嶈兘鏄剧ず鐨凙SCII瀛楃锛屽, , 绛夛紝灏辩О涓鸿浆涔夊瓧绗︼紝鍥犱负鍚庨潰鐨勫瓧绗︼紝閮戒笉鏄畠鏈潵鐨凙SCII瀛楃鎰忔濅簡銆傝浆涔夊瓧绗︽槸寰堝绋嬪簭...
  • c璇█涓鐨"!"鏄粈涔堟剰鎬
    绛旓細c璇█涓鐨勨!鈥濇槸閫昏緫杩愮畻涓殑闈炶繍绠椼傗!鈥濇槸C璇█涓鐨勯潪杩愮畻绗︼紝鍦ㄥ彉閲忓墠闈娇鐢ㄥ畠锛屼細鏋勫缓闈炶繍绠楄〃杈惧紡锛岃〃杈惧紡鐨勮繑鍥炵粨鏋滄槸涓竷灏斿硷紙涔熷氨鏄彧鏈塼rue鎴杅alse锛夈傚鍙橀噺浣跨敤鏃讹紝濡傛灉鍙橀噺涓嶆槸甯冨皵鏁版嵁绫诲瀷锛屽皢浼氬己鍒惰浆鍖栦负甯冨皵绫诲瀷鍐嶄娇鐢紝濡傛暣褰㈠彉閲123灏嗚杞寲涓簍rue锛屾暣褰㈠彉閲0灏嗚杞寲涓篺alse銆
  • c璇█鐨剕=鏄粈涔堟剰鎬?
    绛旓細c璇█涓鐨剕=鏄粈涔堟剰鎬濓紵锛嶏紞锛 杩欐槸绠鍐欏舰寮忋傚鏋滄湁锛氥a |= b锛涳紝鍏跺畬鏁村啓娉曟槸锛氥a = a | b锛涖
  • c璇█涓鐨?鍜:鏄粈涔堣繍绠楃?
    绛旓細C璇█閲岄潰?銆侊細鏄笁鏈ㄨ繍绠楃锛屽叾涓紵鐢ㄦ潵鍒ゆ柇鏉′欢鐨勭湡鍋囷紝锛氱敤鏉ユ牴鎹垽鏂粨鏋滃喅瀹氬彇鍊笺傚(a<b)?a:b"鏄竴涓"鏉′欢琛ㄨ揪寮"锛屽鏋渁
  • 鍦C璇█涓,鈥?鈥濄傗:鈥濇槸浠涔堟剰鎬?
    绛旓細1銆佹剰鎬濓細鏄潯浠惰繍绠楃锛屾潯浠惰繍绠楃鏄C璇█涓鍞竴鐨勪笁鐩繍绠楃锛屽氨鏄浠栨湁涓変釜杩愮畻瀵硅薄銆2銆佹潯浠惰繍绠楃鐨勫舰寮忔槸鈥滐紵锛氣濈敱浠栨瀯鎴愮殑琛ㄨ揪寮忕О涓烘潯浠惰〃杈惧紡銆傚舰寮忎负锛氳〃杈惧紡1锛熻〃杈惧紡2锛氳〃杈惧紡3銆傝繍绠楃 琛ㄨ揪寮忎负锛氳〃杈惧紡1锛熻〃杈惧紡2锛氳〃杈惧紡3 鍏堟眰瑙h〃杈惧紡1 鑻ュ叾鍊间负鐪燂紙闈0锛夊垯灏嗚〃杈惧紡2鐨勫间綔涓烘暣涓...
  • C璇█涓% c鏄粈涔堟剰鎬?
    绛旓細s:杈撳叆杈撳嚭涓哄瓧绗︿覆 f:杈撳叆杈撳嚭涓烘诞鐐瑰瀷 printf( stream, "%s%c", s, c );s -- 鎵撳嵃鏍煎紡锛屾寜瀛楃涓叉柟寮忚緭鍑哄彉閲弒鐨勫硷紙瀛楃涓诧級鍒版枃浠舵祦stream c -- 鎵撳嵃鏍煎紡锛屾寜ASCII瀛楃鏂瑰紡杈撳嚭鍙橀噺c鐨勫(鍗虫墦鍗颁竴涓瓧绗︼級鍒版枃浠舵祦stream :鍦–++涓湁涓ょ鎰忔濓紝涓绉嶆槸鍙栧湴鍧绗︼紝鏄崟鐩繍绠楃锛涘彟涓绉...
  • c璇█涓%5d鏄粈涔堟剰鎬?
    绛旓細C璇█涓锛屸%5d鈥濇槸鐨勬剰鎬濇槸浠ユ暣褰㈡潵鏍煎紡鍖栧弬鏁帮紝骞朵笖褰撴暣鏁板瓧绗︽暟灏戜簬5涓儏鍐典笅锛屽鏍煎紡鍖栦竴瀹氭暟閲忕┖鏍兼潵濉厖锛屼互浣垮緱绌烘牸鍜屾暣鏁版墍鐢ㄥ瓧绗︽暟鐨勬诲拰杈惧埌鑷冲皯5涓侰璇█涓紝鈥%5d鈥濅竴鑸敤浜巔rintf鍑芥暟鍜宻printf鍑芥暟銆傚畠浠牸寮忓寲瀛楃涓叉椂锛屽彲浠ユ寚瀹氫覆鐨勬牸寮忥紝鍦ㄦ牸寮忎覆鍐呴儴浣跨敤涓浜涗互鈥%鈥濆紑澶寸殑鏍煎紡璇存槑绗︽潵...
  • c璇█涓鈥溾栤濈殑鎰忔濇槸?
    绛旓細c璇█涓锛屸栨槸閫昏緫鎴栨搷浣滅銆傚叾宸﹀彸浜屼釜琛ㄨ揪寮忎腑锛屽彧瑕佹湁涓涓负鐪燂紝杩愮畻缁撴灉灏辨槸鐪熴傛寜浣嶄笌閫昏緫鏄笉涓鏍风殑锛屾寜浣嶆槸浠ヤ簩杩涘埗鏉ュ鐞嗭紝鑰岄昏緫鏄潵澶勭悊閫昏緫鍊硷紝閫昏緫鍊艰涔堜负0锛岃涔堜负闈0銆備緥濡7||0涓虹湡锛7&0涓哄亣锛7&0涓0000锛7浜岃繘鍒朵负0111锛0浜岃繘鍒朵负0000锛7&9涓1锛屽洜涓9鐨勪簩杩涘埗涓1001锛7...
  • 扩展阅读:新中同gt ... gt 3 ... java gt ... y gt ... gt cut水蜜桃图片 ... gta5单机 ... cn2 gt ... 海鱼gt多少钱一斤 ... gt a ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网