C语言格式化Int64

经常使用,为方便查找特此记录.

int64_t数的输出:%lld ;
uint64_t数的输出:%llu ;
uint64_t数十六进制输出:%llx ;
uint64_t数八进制输出:%llo ;

int64_t

#if defined(_MSC_VER)		
		_snprintf_s(&buffer, SE_MAX_NUMSTR, SE_MAX_NUMSTR, "%I64d", val);
#else
#	ifdef __x86_64__
		snprintf(&buffer, SE_MAX_NUMSTR, "%ld", val);
#	elif __i386__
		snprintf(&buffer, SE_MAX_NUMSTR, "%lld", val);
#	endif
#endif

uint64_t

#if defined(_MSC_VER)		
		_snprintf_s(&buffer, SE_MAX_NUMSTR, SE_MAX_NUMSTR, "%I64u", val);
#else
#	ifdef __x86_64__
		snprintf(&buffer, SE_MAX_NUMSTR, "%lu", val);
#	elif __i386__
		snprintf(&buffer, SE_MAX_NUMSTR, "%llu", val);
#	endif
#endif

PostgreSQL 十六进制转换为整数

SELECT x'ffffffff'::integer,x'ffffffffffffffff'::bigint

补充

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
#ifdef _MSC_VER
#ifdef _WIN64
	fprintf(stdout, "size_t:%zu\n", sizeof(size_t));
	fprintf(stdout, "int:%zu\n", sizeof(int));
	fprintf(stdout, "long:%zu\n", sizeof(long));
	fprintf(stdout, "long int:%zu\n", sizeof(long int));
	fprintf(stdout, "long long int:%zu\n", sizeof(long long int));
#elif _WIN32
	fprintf(stdout, "size_t:%u\n", sizeof(size_t));
	fprintf(stdout, "int:%u\n", sizeof(int));
	fprintf(stdout, "long:%u\n", sizeof(long));
	fprintf(stdout, "long int:%u\n", sizeof(long int));
	fprintf(stdout, "long long int:%u\n", sizeof(long long int));
#endif
#else
#ifdef __x86_64__
	fprintf(stdout, "size_t:%lu\n", sizeof(size_t));
	fprintf(stdout, "int:%lu\n", sizeof(int));
	fprintf(stdout, "long:%lu\n", sizeof(long));
	fprintf(stdout, "long int:%lu\n", sizeof(long int));
	fprintf(stdout, "long long int:%lu\n", sizeof(long long int));
#elif __i386__
	fprintf(stdout, "size_t:%u\n", sizeof(size_t));
	fprintf(stdout, "int:%u\n", sizeof(int));
	fprintf(stdout, "long:%u\n", sizeof(long));
	fprintf(stdout, "long int:%u\n", sizeof(long int));
	fprintf(stdout, "long long int:%u\n", sizeof(long long int));
#endif
#endif;
	system("pause");
	return 0;
}

VC X64

size_t:8
int:4
long:4
long int:4
long long int:8

VC X86

size_t:4
int:4
long:4
long int:4
long long int:8

gcc x86_64

size_t:8
int:4
long:8
long int:8
long long int:8

gcc i386

size_t:4
int:4
long:4
long int:4
long long int:8

除了long long int固定为8字节外,其它类型都会发生变化
建议使用C99 stdint.h标准规范化程序

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
int main(int argc, char** argv) {
	fprintf(stdout, "C99 stdint.h\n");
	fprintf(stdout, "int8_t:%zu\n", sizeof(int8_t));
	fprintf(stdout, "int16_t:%zu\n", sizeof(int16_t));
	fprintf(stdout, "int32_t:%zu\n", sizeof(int32_t));
	fprintf(stdout, "int64_t:%zu\n", sizeof(int64_t));
	system("pause");
	return 0;
}
/*
int8_t:1
int16_t::2
int32_t:4
int64_t:8
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kmblack1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值