或者换句话说:可能错误printf/ fprintf十进制整数(%d,%u,%ld,%lld)格式化字符串导致程序崩溃或导致未定义的行为?
Cosinder的以下代码行:
#include <iostream>
#include <cstdio>
int main() {
std::cout << sizeof(int) << std::endl
<< sizeof(long) << std::endl;
long a = 10;
long b = 20;
std::printf("%d, %d\n", a, b);
return 0;
}
在32位架构上的结果:
4
4
10, 20
64位体系结构的结果:
4
8
10, 20
无论如何,程序都会打印出预期的结果。我知道,如果该long值超出int范围,程序将打印错误的数字-这很丑陋,但不会影响程序的主要目的-但是除此之外,还会发生意外情况吗?
慕标琳琳
扬帆大鱼
天涯尽头无女友
相关分类