想問一下下printf 2d 是什麼意思呢?

時間 2021-06-29 06:13:45

1樓:C十十20年

題主想問的是:這個語句乙個數值都沒給,為什麼編譯能通過,還能列印出數字是吧?首先,"%2d"表示輸出格式為2個十進位制(d即decimal)數字,倘若你的整數有效位數超過2位則會全部原樣輸出。

其次,printf的函式原型為int printf(const char*, …),…表示在輸出格式之後可以列出任意個任意型別的值,因此,哪怕你列出0個或5個也是正確的,即使乙個數值都沒有編譯也能通過;此外,任意型別的值包括2.3也是可以的,只不過輸出不會是2。再次,參見《C++程式設計精要教程》,函式實參是通過壓棧傳遞的,傳幾個實參還是傳仼意個實參,編譯程式和printf函式並不在乎,printf函式會掃瞄輸出格式"%2d",根據輸出格式從棧上取實參的值,"%2d"表示要從棧上取乙個整數值,至於傳沒傳乙個整數實參它不管,反正棧總是存在的,所以取的值可能是別的函式留下的痕跡,因此列印結果看起來有些隨機。

至於printf和scanf返回值是何含義、有何不同、返回值存在何處、以及壓棧傳遞實參的方向和順序參見上述教程。

2樓:C語言中文社群

這個拆開來理解,%d是輸出int 型資料的,這裡的數字2表示提供2個字元的位置來輸出這個資料,例如要將3,4,5分別輸出,那輸出的結果就是 3 4 5 相當於加了空格,如果只用了%d,輸出結果則是345,這樣不方便讀取。

3樓:西紅柿炒雞蛋

C語言中%2d是printf函式的輸出格式說明符。

表示:使輸出的int型資料以2位的固定位寬輸出若不足2位則在前面補空格。

若超出2位,則按實際的位數進行輸出。

若輸出的值不是int型,則進行強制型別轉換,轉換成int型,之後按上面的格式輸出。

舉例:printf("%2d",56); //輸出56

printf("%2d",116); //輸出116,這裡超出2位按實際位數輸出。

printf("%2d",6); //輸出&6(&表示空格)不足2位則在前面補空格。

printf("%2d",66.6); //輸出66(強制型別轉換),取整數。

有誰可以介紹一下下, 什麼是projection matrix (投影矩陣),以及它的性質?

Hmnsker 從頭出發。首先看乙個矩陣 承擔投影的作用應該有什麼性質,這部分定義應該是直觀的。滿足三個條件的矩陣 就叫做投影到 的投影矩陣 1.任意矩陣放進去都到列空間了。注意這是定義,其實是對任意矩陣都很成立的,不用驗證。2.投影本身就在列空間向量自然不變。3.投影兩次或者多次就相當於一次,因為...

那個,問一下下,看過seed和seed destiny的,為什麼飛鳥被黑的的那麼慘?

如水 扎夫特軍在強調軍事教育的同時,忽視了對年輕戰鬥人員的思想教育,後果就是整個扎夫特朝著軍國主義和帝國主義發展,2887的他爹的做法已經接近小鬍子了,就知道這幫上歲數的人受的教育也有問題,一看他們就沒有政委搞思想教育。具體說說飛鳥吧!就好比u國和z國開戰,u要徵用b國的設施,並要把中立國b國拖進戰...

可不可以安慰我一下下

Five 沒事人生很短,總會過去的,你和我一起,在死亡沒有來臨之前,所有夜晚的矯情做作的情緒,是多麼不值一提,你痛苦,我痛苦,大家都痛苦。 小白 你不要用無所謂的語氣來跟我說你沒事你很好,你說什麼我都聽,我會給你最好的建議,可你記住這只是建議,你想做什麼就去做,你在我這裡永遠有台階下,永遠有紙巾擦淚...