理解Go 和C 中64 位元整數-1 的十六進位表示
在Go 和C 中,%x 格式用於以十六進位表示法列印整數。然而,當應用於負 64 位元整數 -1 時,就會出現分歧。
在 Go 中,%x 保留負值,顯示“-1”,而 C 輸出“ffffffffffffffff”。這種差異源自於 Go 嚴格的類型處理。
要在 Go 中將 -1 的十六進位表示形式列印為無符號整數,需要明確轉換。將其轉換為uint 可確保該值被解釋為無符號類型:
這會產生輸出:
第二個十六進位值(「ffffffffff 」)表示當被視為無符號整數時,2 的補碼是-1。
如 Rob Pike 所解釋的,此行為背後的基本原理是保留以緊湊格式列印負數的能力。如果 %x 格式始終將參數視為無符號,則沒有直接的方法來顯示負值。
以上是為什麼 Go 和 C 中的 -1 %x 格式輸出不同的十六進位表示?的詳細內容。更多資訊請關注PHP中文網其他相關文章!