【发布时间】:2019-12-17 22:09:11
【问题描述】:
#include <stdlib.h>
#include <stdint.h>
#include <stdio.h>
uint32_t func() { return rand() % 10; }
struct A {
uint32_t _x, _y, _z;
A(uint32_t x, uint32_t y, uint32_t z) : _x(x), _y(y), _z(z) {}
};
int main() {
A a{func(), func(), func()};
//A a(func(), func(), func());
printf("%d %d %d\n", a._x, a._y, a._z);
return 0;
}
GCC 9.1 和MSVC 19.22.27905 在使用花括号或圆括号时都将打印不同的顺序。
Clang 8.0.0 将在两种情况下打印相同的订单。
我在标准中找不到任何关于它的内容,是在标准中还是由编译器决定它评估输入参数的命令?
【问题讨论】:
标签: c++ c++11 constructor language-lawyer c++17