各位C、C++开发的朋友们,有没有想过小小的printf也会有陷阱呢?这篇文章,我们就深入来探究一下(代码均在suse10 32位系统下编译测试通过)。 废话不多说,直接上代码:
int64_t a = 1; printf("%d\n", a);
结果是多少呢?当然是1,你可能会说。 我们来看一下结果:
1
果然是1!但是你会不会以为是 a 首先被自动转化成了 int 类型,然后输入为 1的呢? 如果真这么简单,本文到此也该结束了。我们换一个写法:
int64_t a = 1; int b = 2; printf("%d, %d\n", a, b);
这次的结果是多少呢?1 和 2?真的吗?我们来看一下结果:
1, 0 ...