24 printf跨平台,資料型別與輸出型別要匹配

2021-09-08 15:39:12 字數 964 閱讀 7737

1、使用

printf

應當說是型別不安全的。所以才引入了

c++的流輸入輸出。

比如:#include "stdint.h"

#include "iostream"

using namespace std;

int main()

輸出是:

0xbfd831e0 0xbfd831dc

13823853877176303617  //error

1 21 0  //error

可以看到,

uint32_t

型別,我們用

lld時,出現了錯誤,

因為

printf

是根據型別,從起始位址偏移型別個位元組進行讀取資料。

使用c++

中的流便不會出現這個問題。在跨平台中,應當引起注意。

2、型別與位元組數【3】

%ld:long int, 32位平台

4 bytes

%lld: long long int, 32位平台

8 bytes

%lf:double

**************

typedef signed char       int8_t

typedef short int         int16_t;

typedef int             int32_t;

# if __wordsize == 64

typedef long int         int64_t;

# else

__extension__

typedef long long int     int64_t;

#endif

參考:【1】

】 】 型別與位元組數

】 printf

實現的**

跨平台資料庫工具Azure Data Studio

azure data studio是一種跨平台資料庫工具,適用於在windows,macos和linux上使用microsoft系列內部部署和雲資料平台的資料專業人員。azure data studio 是從跨平台 visual studio code vs code 與其 mssql 擴充套件的交...

平台呼叫資料型別

wtypes.h 中的非託管型別 非託管 c 語言型別 託管類名 說明handlevoid system.intptr 32 位 byteunsigned charsystem.byte 8 位shortshortsystem.int16 16 位 wordunsigned shortsystem....

平台呼叫資料型別

wtypes.h 中的非託管型別 非託管 c 語言型別 託管類名 說明handle void system.intptr 在 32 位 windows 作業系統上為 32 位,在 64 位 windows 作業系統上為 64 位。byte unsigned char system.byte 8 位s...