记事 : volatile 的使用
起因
今天在实验 std::regex 时
cout<<regex_match("word",result,regex("\\w+")<<result[0]<<endl;
然后就报错了.然后我发现c++先计算result[0]的值.
volatile的一种使用情景
然后我就
#include <cstdio>
using namespace std;
class test{
public:
static int cnt;
test operator()(int a)
{
++cnt;
printf("<%d> %d ",cnt,a);
return test();
}
};
int test::cnt=0;
int main()
{
int a=0;
test()(++a)(++a)(++a);
return 0;
}
然后惊奇的发现输出是
<1> 3 <2> 3 <3> 3
然后就被吓到了.
于是我就
16c16
< int a=0;
---
> volatile int a=0;
输出就变成了
<1> 3 <2> 2 <3> 1
还是跟我想的不一样,
不是说好的左结合么?
或者是未定义行为?