以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 C/C++编程思想 』 (http://bbs.xml.org.cn/list.asp?boardid=61) ---- 请教高手一个编程问题 (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=39111) |
-- 作者:飞鹰战士 -- 发布时间:10/19/2006 8:41:00 PM -- 请教高手一个编程问题 在VC++ 下 main() 输出的结果为什么是 13 ? |
-- 作者:longshentailang -- 发布时间:10/19/2006 10:47:00 PM -- 你那个输出结果是错的,应该是15。因为前加操作符++优先级最高(在这里),所以先进行3次++操作,使得i的值变为5,然后再就是3个5相加(5+5+5),故最终所得结果是15。 |
-- 作者:zhu_ruixian -- 发布时间:10/20/2006 1:31:00 PM -- 结果是15 #include "stdio.h" main() { int i=2; printf("%d",(++i)+(++i)+(++i)+(++i)); getchar(); } 的输出是 24 上面说的很对。没试之前我还以为是12。呵呵 |
-- 作者:longshentailang -- 发布时间:10/20/2006 3:40:00 PM -- 在这里++操作符的优先级并不是最高的,优先级最高的是小括号(),其次才是++操作符。上面说错了,但还是那样运算的,结果仍然是15。 可以看一下URL:http://xdjy.cxtc.edu.cn/wshfdz/bym_yxb_c/symbol_level.htm, C语言运算符的“优先级口决”。 |
-- 作者:飞鹰战士 -- 发布时间:10/20/2006 6:44:00 PM -- 谢谢各位了,不过你们是不是用的VC++6.0呀?我在 .NET下运行也是15,不过我想了解一下是怎么编译的? |
-- 作者:longshentailang -- 发布时间:10/21/2006 11:05:00 AM -- 其实,输出的结果13也是正确的。这取决于不同的编译环境,我在Dev-C++(v4.9.9.2)下运行所得的结果就是13。在VC++6.0和VS2005下是15。 |
-- 作者:won112 -- 发布时间:10/21/2006 6:59:00 PM -- 楼上的好象有错啊, 我在VC++6.0中编译的结果就是13, 但我不知是什么原因才造成这种结果, 想知道, 请高手给条活路!!!!!!!!!! |
-- 作者:cqthinking -- 发布时间:4/7/2007 11:28:00 AM -- 就是编译器的问题吧, 没什么对错的, 编程序时,只要考虑不同的编译器特点, 利用就可以了阿 |
-- 作者:Christopher-sky -- 发布时间:4/8/2007 3:29:00 AM -- 我觉得++运算符从后面先算,最后的两个i有了数值才可以进行加法,所以后面两个加起来是8,再进行前面的加法,i是5,所以,5+8=13. 同理,其他的运算结果也是这样得来... |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
62.500ms |