gpt4 book ai didi

c - 表达式的反向分析

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:58:02 25 4
gpt4 key购买 nike

假设我在 C 中有以下代码段。

i = j = k = 1;

j = (i++) + (++k);

result = i + j + k; //POI
//Expected result = 7

这里,我想通过反向分析找到result的值。当我执行反向分析时,我将按顺序执行以下表达式。

j = (i++) + (++k);
++k;
i++;
i = j = k = 1;
j = k = 1;
k = 1;

在反向分析过程中,只要适用,我将用相应的表达式替换每个变量。但是我很困惑如何处理递增/递减操作。

我目前的策略会产生以下结果

result = i + j + k

//after j = i++ + ++k
result = (i+(i+(k+1)))+k

//after ++k
result = (i+(i+((k+1)+1)))+(k+1)

//after i++
result = ((i+1)+((i+1)+((k+1)+1)))+(k+1)

//after i = j = k = 1
result = ((1+1)+((1+1)+((k+1)+1)))+(k+1)

//after k = 1
result = (((1+1)+((1+1)+((1+1)+1)))+(1+1))

//Simplifying
result = 9

这当然不是真的。

谁能帮我解决这个问题?

最佳答案

我觉得应该更像这样

result = i + j + k

//after j = X + Y // You didn't analyse ++k and i++ yet
result = i+(X+Y)+k

//after Y = ++k
result = (i+(X+(k+1))+(k+1)

//after X = i++
result = ((i+1)+(i+(k+1))+(k+1)

//after i = j = k = 1
result = ((1+1)+(1+(k+1))+(k+1)

//after k = 1
result = ((1+1)+(1+(1+1))+(1+1)

//Simplifying
result = 7

关于c - 表达式的反向分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29816235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com