先看代码
time_t tt = time(NULL);
time_t jsdtime= time(NULL);
time_t jgtime = 20;
jsdtime += jgtime;
printf("当前时间 = %d 结束时间 = %d \n", tt, jsdtime);
这里输出的结果如下:
可以看到打印的第二个参数jsdtime 输出的是0
我们再换一种写法:
time_t tt = time(NULL);
time_t jsdtime= time(NULL);
time_t jgtime = 20;
jsdtime += jgtime;
printf("当前时间 = %d \n", tt);
printf("结束时间 = %d\n", jsdtime);
输出结果:
这次2个参数的输出都正确了。
于是作为一个喜欢刨根问底的人我就想查下根本原因
乱七八糟查了一堆资料也没头绪,偶然的一个原因我看了一个警告:
我们知道printf这个方法在处理占位符时可以自动把参数类型转换成字符类型来处理。
比如:
int a = 10;
float b = 0.332f;
print("a=%d b=%e",a,b);
print 打印时会根据占位符来自动处理数据类型转成字符输出
经过多次测试。第一次的警告print可以正常转换,之后的所有有警告的数据类型不符的都不会正确处理