C++ 自增运算在debug正常,在release出错

struct AAA
{
	unsigned int i0;
	unsigned int i1;
	unsigned int i2;
	AAA() { i0 = 0; i1 = 0; i2 = 0; }
	AAA(int a, int b, int c) {
		i0 = a;
		i1 = b;
		i2 = c;
	}
};


TEST(Cpp, autoplus) {
	int i = 0;

	AAA a(i++,i++,i++);

	EXPECT_EQ(a.i0, 2);
	EXPECT_EQ(a.i1, 1);
	EXPECT_EQ(a.i2, 0);

}

release测试不通过,i0 i1 i2 值都为0

debug通过,i0 i1 i2 值为2,1,0

原因分析:release优化导致的,release模式下,个人猜测是编译器先将i++复制给一个临时变量,int tmp = i++; 再用该临时变量创建AAA对象,从而导致结果不同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值