要打印多种类型off_t,建议使用以下代码:
off_t a;
printf("%llu\n", (unsigned long long)a);
Run Code Online (Sandbox Code Playgroud)
例如,我printf在C++中使用函数用于8位CPU(AVR).以下代码是否安全:
uint8_t a = 5;
printf("%d", a);
Run Code Online (Sandbox Code Playgroud)
这里%d期望int(在我的情况下为16位,在任何情况下至少为16位),但我传递8位整数.
C/C++标准是否保证任何类型的等级小于int升级int?
同样的问题float a和%f期望double,以及其他类似的类型.
请帮助我理解以下C输出:
#include<stdio.h>
int main() {
float x = 4.0;
printf("%f\n",x);
printf("%d\n",x);
int y=x;
printf("%d\n",y);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出gcc编译器
4.000000
0
4
Run Code Online (Sandbox Code Playgroud)
据我所知,当我们将float赋值给一个int变量时,变量的小数部分终止然后分配给int.
为什么在这种情况下没有发生?