语句int i=3;k=(i++)+ (i++)+ (++i);则执行过后k,i的值是?

2024-12-04 19:22:22
推荐回答(3个)
回答1:

这个值是不确定的,具体依赖于编译器

C++标准明确规定,求值顺序未定义
告戒我们,不要在同一条语句中多次修改同一个变量的值
因为这是未定义的,也就是说,在不同的编译器上,它的计算顺序
可能不同,因此值也会不同....

研究这种未定义的问题没意义...

PS:现在一些老师就喜欢出这种BT的题目
你去问你们老师这个答案,他要是给了你答案而没说其他的
你就问他,你确定吗.谁告诉你的这个求值顺序了

回答2:

前缀优先级大于后缀
++,--运算符优先级大于()
所以先是运算中间那个()里面的++i,
i就变成4,然后两个后缀同时运行i++。
后缀(i++)的值是还没加1之前的值。
前缀(++i)的值是加了1之后的值。
所以式子就是4+4+4=12

回答3:

一般不提倡这样写..而且不同的编译器可能结果不一样...建议楼主不要深究这类问题.以后到公司写程序,谁要是写程序是这种风格的...老板第一个开掉他..