相同的printf给出不同的结果

时间:2014-04-24 02:30:36

标签: c++ printf

这是我的第一篇文章,希望这不是转发。 我在mac上使用g ++编写了以下c ++程序。

#include <iostream>
int main ()
{

    double b = 1;
    printf("%x\n", b);
    printf("%x\n", b);
    printf("%x\n", b);
    printf("%x\n", b);
    return 0;

}

为什么程序给出了相同代码的不同结果?这是输出。

5ca5ebf8
100
200
300

但在Windows上的VS中不会显示此行为。 感谢。

1 个答案:

答案 0 :(得分:0)

这是任何体面的编译器应该得到的警告:warning: format specifies type 'unsigned int' but the argument has type 'double'

所以你得到了未定义的行为,任何事情都可能发生:)