高悬赏求解答c语言问题初级问题

  • 程序首先执行第一个二元加法运算:(++i)+(++i) 但是由于两个加数都是表达式因此程序首先执行两个表达式: 执行这两个表达式后:i=7
  •  21和22没有哪个错哪个对,随着编译器的解释不同洏不同对于(++i)+(++i)+(++i),编译器一般都先执行前面两个(++i)相加即[(++i)+(++i)]+(++i),这点没有歧义。歧义的地方在于不同的编译器对中括号中的解释不同[(++i)+(++i)],一种昰先对i自++,得到前面一个(++i)为6再对后面的i自++,得到7.这样加起来为13.另一种解释是先对i执行两次自++得到7,再相加得到14. C标准对于这种执行順序没有作出明确规定所以就看编译器自己的实现了,没有对错我们写代码时不鼓励这种风格,除非你对你的编译器的实现是了解的
    全部
  •  对这个问题十分好奇,所以我测试了几个不同的编译器对这段代码的执行情况C/C++结果是22,java和php都是21然后我又在C++里面分步测试,也是21然后我又写成(++i)+7+(++i)也是21。结果差了一些资料就是+号两边的括号问题,两边是一起运算的所以最左边的(++i)变成了7。所以最终没誰对谁错编译器不同,运算的步骤也不一样所以用什么编译器就要了解什么编译器的“规则”。
    全部
  • 这个应该随编译器的解释而变化
    就没有歧义了,P=21
    全部
}

我要回帖

更多关于 c语言问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信