例如,我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,以及其他类似的类型.
Ded*_*tor 14
看在草案n1256(C99与技术勘误TC1,TC2,TC3和包括)为6.5.2.2 Function calls:
对于没有原型的函数或与省略号对应的参数...,将执行默认参数提升.
这些都是:默认整数促销和推广float来double.
默认整数提升:小于的每个整数类型的int提升为int或unsigned int.
| 归档时间: |
|
| 查看次数: |
1935 次 |
| 最近记录: |