同一份代码、同一份输入在64位和32位上的输出结果不一样,开了O2和不开O2的运行结果不一样是什么原因?
代码(主要是实现日期转换)
输入:
12
3385 9 5 21 25
1
2 8 38 23 0
1
3 3 1 9 24
2
3392 1 28 3 41
1
8 12 10 11 39
1
6 14 26 19 4
2
3394 1 28 23 16
2
3395 12 12 2 34
2
3387 6 30 9 50
1
2 14 12 4 6
1
1 3 34 5 3
1
8 12 27 15 33
1
1 8 23 17 38
64位编译器输出:
3388 7 11 4 20
3388 20 29 16 4
4 7 31 4 36
3400 3 8 18 19
3396 9 4 12 24
5 8 36 5 31
6 8 31 22 49
1 17 16 16 5
3389 2 13 5 26
3385 12 29 7 3
3400 3 23 9 33
3386 8 6 23 38
32位编译器输出:
3387 18 10 4 20
3388 20 29 16 4
4 7 31 4 36
3400 3 8 18 19
3395 19 35 12 24
5 8 36 5 31
6 8 31 22 49
1 17 16 16 5
3389 2 13 5 26
3385 12 29 7 3
3400 3 23 9 33
3385 19 6 23 38
不开O2输出:
3387 18 10 4 20
3388 20 29 16 4
4 7 31 4 36
3400 3 8 18 19
3395 19 35 12 24
5 8 36 5 31
6 8 31 22 49
1 17 16 16 5
3389 2 13 5 26
3385 12 29 7 3
3400 3 23 9 33
3385 19 6 23 38
开O2输出:
3388 7 10 4 20
3389 9 29 16 4
4 7 31 4 36
3400 3 8 18 19
3396 9 4 12 24
5 8 36 5 31
6 8 31 22 49
1 17 16 16 5
3389 2 13 5 26
3385 12 29 7 3
3400 3 23 9 33
3386 8 6 23 38
有人能解答一下为什么会出现这种情况?