日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

读c语言深度剖析 -- 单引号与双引号、逻辑运算符、位运算符、花括号

發布時間:2023/12/19 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 读c语言深度剖析 -- 单引号与双引号、逻辑运算符、位运算符、花括号 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

單引號與雙引號

我們知道雙引號引起來的都是字符串常量,單引號引起來的都是字符常量。

比如:‘a’和“a”完全不一樣,在內存里前者占1個byte,后者占2個byte。

1,‘1‘,“1”。

第一個是×××常數,32位系統下占4個byte;第二個是字符常量,占1個byte;第三個是字符串常量,占2個byte。

三者表示的意義完全不一樣,所占的內存大小也不一樣

字符在內存里是以ASCAII碼 存儲的,所以字符常量可以與×××常量或變量進行運算。如:‘A‘+1。

關于字符串常量在指針與數組那章將有更多的討論。

?邏輯運算符

||? 和&&?是我們經常用到的邏輯運算符,與按位運算符|和&是兩碼事。雖然簡單,但畢竟容易犯錯。看例子:

int i=0;

int j=0;

if( (++i>0) || (++j>0) )

{

?? //打印出i和j的值。

}

結果:i=1;j=0。不要驚訝。

邏輯運算符||兩邊的條件只要有一個為真,其結果就真;只要有一個結果為假,其結果就為假。

if((++i>0)||(++j>0))語句中,先計算(++i>0),發現其結果為真,后面的(++j>0)便不再計算。

同樣&&運算符也要注意這種情況。這是很容易出錯的地方,一定要注意。

位運算符

C語言中位運算包括下面幾種:

&按位與??? |按位或??? ^按位異或

~取反???? <<左移??? >>右移

前4種操作很簡單,一般不會出錯。但要注意按位運算符|和&與邏輯運算符||和&&完全是兩碼事,別混淆了。

其中按位異或操作可以實現不用第三個臨時變量交換兩個變量的值:a^=b;?? b^=a;? a^=b;

但并不推薦這么做,因為這樣的代碼讀起來很費勁。

左移和右移

左移運算符“<<”是雙目運算符。

其功能把“<<”左邊的運算數的各二進位全部左移若干位,由“<<”右邊的數指定移動的位數,高位丟棄,低位補0。

右移運算符“>>”是雙目運算符。

其功能是把“>>”左邊的運算數的各二進位全部右移若干位,“>>”右邊的數指定移動的位數。

但注意:對于有符號數,在右移時,符號位將隨同移動.

當為正數時,最高位補0;

而為負數時,符號位為1,最高位是補0或是補1取決于編譯系統的規定。TurboC和很多系統規定為補1。

0x01<<2+3的值為多少?

結果為7嗎?測試一下。結果為為 32

因為“+”號的優先級比移位運算符的優先級高

好,在32位系統下,再把這個例子改寫一下:

0x01<<2+30;或0x01<<2-3;

這樣行嗎?不行。一個整型數長度為32位,左移32位發生了什么事情?

溢出!左移-1位呢?反過來移?

切記,左移和右移的位數是有講究的。左移和右移的位數不能大于數據的長度,不能小于0。

花括號

char a[10]= {“abcde”};

char a[10]=“abcde”;????兩者均正確輸出效果是一樣的

花括號的作用是什么呢?我們平時寫函數,if、while、for、switch語句等都用到了它

但有時又省略掉了它。簡單來說花括號的作用就是打包。使之形成一個整體,并與外界絕緣。

轉載于:https://blog.51cto.com/xzv587/1363219

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的读c语言深度剖析 -- 单引号与双引号、逻辑运算符、位运算符、花括号的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。