1樓:匿名使用者
舉個例子你就明白了。像&=,+=,|=這些比較常用一點兒。比如 int a; a +2 與 a+=2;效果是不一樣的,a+2,並未改變a的值,但是a+=2,效果等於a = a+2;a的值實際上是增加了2.
所以《也是一樣的,a<<2這句只是一個運算,就是a左移2位,但是並未改變a的值,但是a<<=2,相當於 a = a<<2,改變了a的值
就像是 int x = 1;x +1;這時x的值並沒有改,但是x+=1,代表x加了1,這時x= 2;就這樣,不明白再問我
2樓:匿名使用者
a <<=5;
就相當於
a = a <<5;
操作完給自己賦值
《就只有一個功能,就是移位
3樓:匿名使用者
針對你追問中的問題:語句return(x >> (p+1-n) & ~(~0 << n); 移位運算子的優先順序高於位操作運算子,該語句看成x右移 (p+1-n) 位後和 ~(~0 << n) 這個運算元進行與運算。
這裡為相應變數代入數值作為例子,設x為12,(p+1-n) 為2,n為1,則x >> (p+1-n):12>>2 ,假設是8位的系統,則為:00001100>>2 -> 00000011(對應十進位制為3),再看 ~(~0 << n),即為
~(~0 << 1) ,看裡層的~0 << 1 (注二進位制:0:00000000,~0:
11111111) ,左移1位後為:11111110,再取反:00000001,最後對二者進行與運算00000011 & 00000001 ,為00000001,對應十進位制的值為1,該值經由return語句被返回,由呼叫該函式的函式接收,如:
int getnum(int p,int n)int main()
4樓:匿名使用者
a <<= b 等價於 a = a << b,除了只被求值一次。
在c語言中 <<與<<=的區別
5樓:海天盛筵
在c語言中bai
《與<<=唯一的一個區別就du
是作用不同。
c語言zhi
中的>>和《分別dao
是左移運算子和右回移運算子,用於整數在二進答制形式的移位運算;
關係運算子用於比較運算。包括大於(>)、小於(<)、等於(==)、大於等於(>=);小於等於(<=)和不等於(!=)六種。
在c語言中x<<=1等於x=x<<1,是把x左移1位以後值儲存回x裡,x發生變化了。
擴充套件資料:
<<、=運算子在c語言中的功能:
1、《的功能
把“<<”左邊的運算數的各二進位全部左移若干位,由“<<”右邊的數指定移動的位數,高位丟棄,低位補0。如a<2、=的功能
對物件進行賦值,如a=b,則a的值為b。在c語言中也常常將賦值運算子=與其他的運算子結合起來,表示按照優先順序順序處理物件後,再對物件進行賦值。
結合方向右結合(自右至左)單目運算子
!邏輯非運算子
~按位取反運算子
++自增運算子
--自減運算子
-負號運算子
(型別)型別轉換運算子
*指標運算子
&地址與運算子
sizeof長度運算子
6樓:非常可愛
《與<<=只有一du個區別就是作用zhi不同。
c語言dao中的》和《分別是左移運版算符和右移運算子,用於整權數在二進位制形式的移位運算;
關係運算子用於比較運算。包括大於(>)、小於(<)、等於(==)、大於等於(>=);小於等於(<=)和不等於(!=)六種。
在c語言中x<<=1等於x=x<<1,是把x左移1位以後值儲存回x裡,x發生變化了。
擴充套件資料結合方向右結合(自右至左)單目運算子
!邏輯非運算子
~按位取反運算子
++自增運算子
--自減運算子
-負號運算子
(型別)型別轉換運算子
*指標運算子
&地址與運算子
sizeof長度運算子
7樓:匿名使用者
x << 1 得到的結果是左移1位後的值,它被儲存在一個臨時變數中,與x無關,即x的值不變。
回x <<= 1 相當於 x = x << 1,是答將x左移1位以後的值儲存回x中,x發生了變化。
好比說:
x + 10 得到比x大10的值——在臨時變數中,但x不變。
x += 10 則是x增大10,x變了。
8樓:匿名使用者
不一樣,看看邏輯運算和賦值 優先順序。
9樓:匿名使用者
直接用,別超額度就行
c語言中=和==有什麼區別
10樓:匿名使用者
= 是賦值操作
==是比較是否相等操作
if(i=1)是永遠成立的
if(i==1)只有當1值是1才成立
11樓:賈文浩
i=i是把數字1的值賦給i
i==1是i的值等於1
12樓:
前者為賦值,後者為判斷
13樓:匿名使用者
=是複製語句,==是判斷前後是否相等
14樓:鍾影南門弘大
=是賦值操作,
==是比較是否相等操作。
15樓:亥熙延潔玉
你是初學吧!“=”是賦值,例如inta=
3;intb=
a;那麼b
=3.“==”關係運算子,表示恆等。一般用在條件判斷中,例如if(null
==fp),如果fp恆等與null,那麼。。。。;
16樓:閻晨漫漾漾
一個=是賦值,兩個則是判斷是否相等
17樓:首桂蘭慕溪
c語言中的
\代表轉義,輸出
.\會提示錯誤,但是./是沒有問題的只是兩個字元而已如果要輸出\
那麼就要寫兩個\
即\\才可以
。c中定義了一些字母前加"\"來表示常見的那些不能顯示的ascii字元,如\0,\t,\n等,就稱為轉義字元,因為後面的字元,都不是它本來的ascii字元意思了。
望採納,謝謝
18樓:操清昶養琪
=號是"附值"==是"精等於"區別就在於是不是能夠等於一個變數如:a=3,a=b把b的值賦給a;a==3a精等於3,但是卻不能寫成a==b;所以最大的區別就在於:==號右側只能是個確定得知,而不能是個變數,而=號可以。
19樓:文賢儀春曉
"="是賦值運算子;
“==”是等於運算子。
20樓:賁心繫玲瓏
=是賦值的意思,==才是判斷兩個變數是否相等。
21樓:允贍卞舉
比如if(a==b)
為什麼不能是if(a=b)?
=是賦值運算子,使用賦值運算子=可以把計算的結果儲存到變數中。
而==是"等於"的意思。用法很簡單.
a=b(即將b賦值給變數a,而不是a等於b)是一個賦值操作.
如果你用了賦值語句(a=b)那麼程式運算的結果將很有可能是錯誤的.在一個賦值(單目=)表示式計算後將改變該表示式和變數的值.如你所說的a=b;則a和表示式a=b的值均為b,條件判斷語句if(a=b)在你的程式中將毫無意義.
在某本國產c++教科書中這被稱為賦值運算子(=)的"***".
a==b的意思即a等於b,在條件判斷時兩邊相等則條件成立,否則不成立.
參考資料:
22樓:鬱宜似瀅瀅
=是賦值,和數學中的函式一樣,a=b
+1;表示b+1的值賦予a,而==表示判斷兩個值是否相等,如a
==b就表示讓計算機判斷a是否等於b,用於對條件是否滿足的判斷
c語言中/n與\n的區別是什麼?
23樓:匿名使用者
\n 轉義字元 回車 換行符 acsii 13/n 就是字串 /n 沒有轉義的意思 按原樣輸出例如printf("test\n");
printf("test/n");
結果是專
test
test/n
若printf("test/n");
printf("test\n");
結果是test/ntest
//注test/ntest下一行為
屬\n效果
c語言中巨集定義的1<<0 和直接定義1有什麼區別
24樓:匿名使用者
#define e1 1<<0
#define e2 1
e1+4 // 結果是16
e2+4 // 結果是5
至於是bug還是故意如此,在下就不知道了
25樓:金色潛鳥
巨集定義#define eot 1 << 0是規定在預編譯時,把 下面程式中 遇到的 詞 eot 用 字串 1 << 0 替代。
所以 不能 換成版 字元 1。
例如:權
#define eot 1 << 0
int x=1;
x = x + eot + 2;
printf("%#x ", x);
和#define eot 1
int x=1;
x = x + eot + 2;
printf("%#x ", x);
得到的結果 不同。前者 0x8, 後者 0x4--------
除非你已看過整個程式,你能確認 用 1 << 0 替代 和 用 1 替代 結果 一樣。
c語言中,使用>與>=,<與<=的區別是什麼?
26樓:萢萢
>不包括等於,>=包括等於的情況。
《不包括等於,<=包括等於的情況。
c語言中“>>=,<<=,&=,^=,|=”分別表示什麼意思?請舉例說明
27樓:弋風
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 等同於00115、c語言中的 |= 意思為:按位或後賦值**示例為:
x = 0x02;
x |= 0x01;
按位或的結果為:0x03 等同於0011
28樓:匿名使用者
複合賦值。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。
<<= 同上,只不過是左移賦值。
&= 是按位與之後賦值,^=是按位異或之後賦值,|=是按位或之後賦值。與,或以及異或的操作很簡單:
101010 101010 101010
& 011100 | 011100 ^ 011100
--------- ---------- ----------
001000 111110 110110
29樓:匿名使用者
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)
C語言中float與double的區別是什麼
賀金蘭陽靜 float一般用於平常的小數,但double由於有效位數和指數範圍都比效廣所以一般用來表示比較精確的小數或者比較大的數 無法用long來表示的 如 1.121324328947893275973249,幾百億上千億等等 允秋芹敏姬 double的位數是float的2倍,float16位,...
c語言中雙引號與單引號的區別,C語言中雙引號與單引號的區別
胡說八道小鬼 1 含義不同。用單引號引起的一個字元實際上代表一個整數,整數值對應於該字元在編譯器採用的字符集中的序列值。而一般我們的編譯器採用的都是ascii字符集。因此 s 的含義其實和十進位制數115的含義是一致的。而用雙引號引起的字串,代表的是一個指向無名陣列起始字元的指標。例如 分別檢視 y...
c語言中sizeof是什麼意思,C語言中sizeof是什麼意思
肥仙女 sizeof是c語言中保留關鍵字,也可以認為是一種運算子,單目運算子。常見的使用方式 int a 10 int arr 1,2,3 char str hello int len a sizeof a int len arr sizeof arr 結果是 len a 4,len arr 12,...