int i=3,j=(++i)+(++i);j=(++i)+(++i)+(++i); 输出j

[复制链接]
查看11 | 回复3 | 2010-3-25 01:41:11 | 显示全部楼层 |阅读模式
答案与编译器品种有关,与编译时的优化处理有关。如果作 优化处理,VC++ 编译器 /O2 (最大速度)或 /O1 优化 或 /Og 优化,得 j=24计算方法 huidouer 已详细说明。VC++ 编译器 不优化 (默认方法)/Od 得 j=22手算:int i=3,j=(++i)+(++i);j=(++i)+(++i)+(++i); 第一个 ++i 是 4,第二个 ++i 是 5第三个 ++i 是 6,第四个 ++i 是 7第五个 ++i 是 8,j=第三个+ 第四个 + 第五个 = 6+7+8 = 21------------说明什么呢, 说明 不要用 C 语言中 前加加 后加加 这种 模棱两可 含义不清的 东西 于 表达式中。j=(++i)+(++i)+(++i); 例如可以写成 k = i+1; j = k+k+k; 看编程人的目的到底是想计算什么。
回复

使用道具 举报

千问 | 2010-3-25 01:41:11 | 显示全部楼层
j=24++i先给i赋值,再进行运算。int i=3;j=(++i)+(++i);第一个++i,i=4第二个++i,i=5j=5+5=10j=(++i)+(++i)+(++i); 这时的i=5第一个++i,i=6第二个++i,i=7第三个++i,i=8j=8+8+8=24
回复

使用道具 举报

千问 | 2010-3-25 01:41:11 | 显示全部楼层
21
回复

使用道具 举报

千问 | 2010-3-25 01:41:11 | 显示全部楼层
22,vc++运算得出的!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行