printf sizeof c语言,你可能对 sizeof(i++) 有点误解。。。
原標題:你可能對 sizeof(i++) 有點誤解。。。
各位,今天還是按照慣例給大家分享一個C語言容易出現的小錯誤,這也是跟sizeof有關的,問題雖小,卻可管中窺豹,話不多說,代碼先行:
# include
intmain
{
inti;
i = 8;
printf( "%dn",i);
printf( "%dn", sizeof(i++));
printf( "%dn",i);
return0;
}
問輸出的值是什么?如果你上來就說8,4,9 那就錯了。當然第一個是8沒問題,第二個是4也沒問題(32位int類型為4),主要錯在了第三個數,其實 本題著重考察的是我們對sizeof的理解。
首先我們要澄清一個誤區:sizeof不是函數,不是函數,不是函數!重要的話說三遍,它是一個關鍵字,更準確地說它是一個單目運算符!其運算符的含義是:求出對象在計算機內存中所占用的字節數。根據C99的規范,sizeof是一個編譯時刻就起效果的運算符,在其內的任何運算都沒有意義,所以sizeof(i++)在編譯的時候被翻譯成sizeof((i++的數據類型)),也就是4(32位int),換言之編譯時sizeof(i++)就被4取代了!因此當程序最終執行的時候,sizeof里面不會有任何的i++運算,所以i的值是不變的,這就是本題想考察的點了。
當然,關于sizeof還有其他許多用法和需要注意的地方,比如它的 對象可以是表達式或者數據類型名,當對象是表達式時,括號可省略等等。。。同時sizeof在各種筆試面試中出現的幾率非常高,希望大家對它進行熟練掌握,今天這里我們就不展開了,就到這里吧,感謝各位的耐心閱讀。
歡迎大家留言區討論哦!
Wink !
期末考試 來啦!
對于 printf , 你確定你很熟?
關于數組的一個小陷阱!
空指針 到底是什么意思?
12月編程語言排行榜 來了!
為什么用 if(0 == x) 而不是 if(x == 0) ?
12月 集成開發環境(IDE)排行榜來了!
假如計算機是中國人發明的,那代碼應該這么寫?
C++寫的一個好玩的猜數字游戲
sizeof 你真的弄明白了嗎? 來看看這個例子
編程能力的4種境界,你到哪一級了?
請大家來給這幾行C語言代碼找找茬
一個簡單但能考察C語言基礎的題目,試試?
八大排序算法 ,C語言詳細版講解,硬核推薦! ! !
堆和棧的區別(非常詳細,干貨收藏! )
C語言中“懸空指針”和“野指針”究竟是什么意思?
這絕對是C語言的一個經典例題了!
這兩個C運算符你可能沒用過,但卻很有用返回搜狐,查看更多
責任編輯:
總結
以上是生活随笔為你收集整理的printf sizeof c语言,你可能对 sizeof(i++) 有点误解。。。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win10用命令提示符解除端口占用方法(
- 下一篇: 同花顺双向交易快捷键(同花顺交易快捷键列