列印long long資料

2021-06-16 17:29:29 字數 1527 閱讀 1269

前言:

在16位環境下,int/unsigned int 佔16位,long/unsignedlong佔32位

在32位環境下,int佔32位,unsigned int佔16位,long/unsignedlong佔32位

何時需要使用:

long和 int 範圍是[-2^31,2^31-1],即-2147483648~2147483647,而unsigned範圍是[0,2^32-1],即0~4294967295,所以常規的32位整數只能夠處理40億左右,

當遇到比40億大的多的數就要用到64位

。64位使用範圍:

不同的編譯器對64位整數的擴充套件有所不同,vc使用__int64/unsigned __int64,範圍是[-2^63, 2^63-1]和[0,2^64-1],即-9223372036854775808~9223372036854775807與 0~18446744073709551615(約1800億億)。

注意點:

1、編譯器不同導致使用64位的申明方式不同;

2、long long/ unsignedlong long一般是linux下申明方式、如:g++

3、__int64 /unsigned __int64一般是windows下使用64位的申明方式,如:vs

4、在賦值時需要注意加上ll進行顯式賦值;

5、當進行64位與 32位的混合運算時,32位整數會被隱式轉換成64位整數。

6、輸出printf("");,long long使用%lld輸出,__int64使用%i64d,無符號使用u替代d即可。

7、測試下來編譯器一般都支援2種操作,不必太過糾結,怎麼使用看個人喜歡。

//******************************===華麗的分隔線****************************************

#include

#include

intmain()

附網友測試結果:

剛實驗了下,在vc6、dev、codeblocks中c語言都可以使用__int64,格式化輸出標識為%i64d。不過在vc6中數字後加2個l是會報錯,可以只加1個或不加。查了下資料,__int64是windows專用的,被vc、gcc等編譯器支援,但在在unix、linux中需用long long配合%lld。後者是標準c的規定!

我試了下long long配合%i64d,可以正確輸出,而不管是long long還是__int64配合%lld都不能正確輸出。所以我得出的結論是在windows下需要用longlong或,__int64配合%i64d。而在unix、linux中必須使用標準c規定的long long配合%lld。

定義乙個long long型別,用 d列印的結果

這幾天複習了一下整形提公升,正好發現乙個令我非常困惑的問題 include intmain 輸出結果 那麼問題來了,lld輸出沒問題,就是long long int型別,但是為什麼 d輸出就成了1 0 2了呢?我們先來看如下 include intmain 輸出結果 我們好像發現了什麼,我對上面的現...

C C 程式設計 long long型別

資料型別long long是c 11中重新定義的,標準規定它最小是64bit 在這之前為了提供超過32bit的整數,各個開發環境 編譯器 分別定義了各自的64bit整數型別。這會導致 不相容 現在,c 11直接定義了long long型別 我猜許多人應該使用過這個型別,當然在c 11之前,這種嘗試會...

c語言long long型別賦值

long long unsigned int num 20140701092715 在c語言中編譯器會把沒有小數的數值常量預設為整形,這條語句編譯器會報警告 root localhost gcc o test 1.c 1.c in function main 1.c 6 warning intege...