欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言中sizeof函數(shù)踩過的坑總結(jié)

 更新時間:2022年04月09日 10:55:38   作者:LittCroco  
sizeof是C語言的一種單目操作符,如C語言的其他操作符++、--等。它并不是函數(shù)。sizeof操作符以字節(jié)形式給出了其操作數(shù)的存儲大小。操作數(shù)可以是一個表達式或括在括號內(nèi)的類型名。操作數(shù)的存儲大小由操作數(shù)的類型決定

sizeof很簡單,但是卻很容易令人踩坑。

正文

先來看這樣一段代碼

int main()
{
int i=2;
printf("%d\n",sizeof(i++));
printf("%d\n",i);
return 0;
}

非常簡單的一段代碼

當(dāng)時我認(rèn)為答案應(yīng)該是

4

3

可是結(jié)果卻是出乎我的意料了

這是為什么呢?

下面來仔細(xì)說一下

在這里插入圖片描述

在這里插入圖片描述

通過調(diào)試觀察雖然確實有i++這么一句代碼,但是卻沒有實現(xiàn)。說到這里很多人可能犯了和我一樣的錯誤,認(rèn)為sizeof是一個函數(shù)。

其實并非如此,sizeof其實是單目操作符的一種,可以求變量類型所占用的空間,單位是字節(jié)。

說到這里就應(yīng)該和strlen函數(shù)區(qū)分開,strlen函數(shù)求的是字符串的字符數(shù),不包括’\0’,而sizeof由于求的是字節(jié)數(shù),會將’\0’計算上。

再說幾個與sizeof這種情況類似的,避免踩坑。

邏輯操作符 &&和 ||也會產(chǎn)生這樣的坑

來看這樣一道題

int main()
{
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++ && ++b && c++;
	//i = a++||++b||c++;
	printf("a = %d\nb = %d\nc = %d\n", a, b, c);
	return 0;
}

答案:

請?zhí)砑訄D片描述

這里大家或許就有疑問了,這個b為什么不等于2呢,這個c為什么不等于4呢,這不是后置++了嗎?

其實邏輯操作符在運算過程中并不會把每個對象都計算到,就拿這個舉例子,由于是后置++,a此時還等于0,對于&&邏輯與來說,答案已經(jīng)顯而易見了,0和任何數(shù)邏輯與都等于0。所以后面的b++,和c++并沒有被計算到。

我想邏輯或也是同理吧,只有有一個”真“,邏輯或得到的就是”真“。

這就意味著c++并沒實現(xiàn)。

在這里插入圖片描述

到此這篇關(guān)于C語言中sizeof()方法踩過的坑總結(jié)的文章就介紹到這了,更多相關(guān)C語言 sizeof內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論