C语言变量范围,打印格式
一、变量范围及打印格式
1、变量范围及打印格式
int: 4字节 -2147483648~2147483647 %d
unsigned int 4字节 0 ~ 4294967295 %u (如果超出int范围,但是你用%d打印看到的只能是负数)
long: 4字节 -2147483648~2147483647 2147483647:linux 2038问题(因为定义类型为long) 打印格式 %ld unsigned long %lu
long long: 8字节 -9223372036854775808 ~ 9223372036854775807 打印格式 %lld
unsigned long long:8字节 0 ~ 18446744073709551615 打印格式 %llu
double 8字节 打印格式:%f(带精度) %g(不带精度) ,double是双精度(64位)
float 4字节 打印格式:%f(带精度) %g(不带精度) 、float 是单精度(32位)
例:(float)100/215 如%0.3f 结果:0.465。 (float)100/200 %0.3f 结果:0.500
区别:float和double都是用来表示实数(浮点数)数据类型,double精度更高,存储范围更大。计算机内部运算时,double消耗更多存储空间和运算时间,在不需要高精度场合,float更高效
%4d :表示不足4位全面补空格 %-4d:表示不足4位后面补空格
2、如何打印函数路径,函数名,行数
printf("%s,%s,%d\n",__FILE__,__func__,__LINE__); 注意是两个下划线 ,区分大小写,其实函数名可以不用
带参宏定义
#define log_info(...) printf(__VA_ARGS__) //表示只打印具体数据,不带行号文件及函数名。
对于可变参数的宏定义,您可以使用省略号 ...
来表示可变参数部分。省略号表示可以接受任意数量的参数。
#define log_info(format,...) printf("File: %s, Line: %d "format,__FILE__,__LINE__,##__VA_ARGS__) format这个字符串可以是任意 ##__VA_ARGS__:表示函数不定长参数
示例:log_info("test:%d,%d\n",a,b);
打印:File: src/app.c, Line: 39 test:1,2