Sha*_*ain -1 c unix printf solaris
请考虑以下程序并观察输出.
#include <stdio.h>
int main()
{
unsigned long long val ;
val =144111444250;
printf ("%llu\n", val);
printf ("%u %llu\n",val, val);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
144111444250
33 10211385600662044705
Run Code Online (Sandbox Code Playgroud)
在第一个printf中使用%llu会得到正确的结果,但在第二个printf中使用%llu会得到错误的结果.
这是未定义的行为:printf期望一个unsigned intfor %u但是你提供了一个unsigned long long int,在此之后发生的任何事情都取决于编译器的奇思妙想.
该格式说明printf,并scanf不仅预示着什么应如何打印/扫描,还能有什么样的参数的期望.如果你撒谎,你不能指望结果是合理的.
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |