这是一些简单的代码。
#include <iostream>
using namespace std;
bool func(char* m)
{
*m = '4';
return true;
}
using namespace std;
int main()
{
char c1 = '3';
cout << "a" << c1 << func(&c1) << c1 << "b" << endl;
return 0;
}
当用 g++ -O0 (4.7.2) 编译它时,输出是 a413b,对于 -O2,输出是 a414b。对于 clang++ 3.2,输出是 a314b。
在这部分代码中,我是否为 c++ 做了任何未定义的事情?