C语言不理解的问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 03:33:17
main()
{int k=1;
printf("%d",k+++k);
}
结果为3。
说明k++时,k=1;可是,之后k=2,和“同一个变量在一个表达式中表示相同的数”矛盾啊?!
为什么?请指教!

k+++k,词法分析用贪心法,注意到优先级,得到
(k++) + k
先算k++,得到
(k++) + k
== 1 + k …………(k++返回1,此时k变为2)
== 1 + 2
== 3
但如果编译器进行优化,把+后面的k值先已经算出来了,那么这种分析可能会失败,即结果也有可能是2。

这种题目本来就不应该出现,除非是考编译原理。
这种代码永远不要写。

可能是这样 k+(++k)=1+2=3,
试下++k+k是不是等于4?
我没C,每办法试,vista下也不能运行C++

你查一下+和++哪个优先级高,还有++k指的是先自增1在运算

这中题的话最好不要离他

我帮你查了一下,++的优先级比+要高,所以先++,即1+2=3

先算k++,得到k的值为2,然后k++返回1参与运算(注:k++是返回k原值参与运算),第二个K是加1后才参与运算,当然是2,所以结果是3.