社区
C++ 语言
帖子详情
一个超简单的C++选择题?
achiever1992
2011-12-28 08:21:47
"#include<iostream.h>
void main( )
{
int i=5,k;
k=(++i)+(++i)+(i++);
cout<<k<<' '<<i<<endl;
}"
A、24 8 B、21 8 C、21 7 D、24 7
为什么选B呢?
++i和i++具体有什么区别,要有例子解释,通俗
...全文
464
38
打赏
收藏
一个超简单的C++选择题?
"#include void main( ) { int i=5,k; k=(++i)+(++i)+(i++); cout<<k<<' '<<i<<endl; }" A、24 8 B、21 8 C、21 7 D、24 7 为什么选B呢? ++i和i++具体有什么区别,要有例子解释,通俗
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
38 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xsniper001
2011-12-29
打赏
举报
回复
顶8楼的,看汇编,汇编很清纯
Zoelov
2011-12-29
打赏
举报
回复
i++和++i的区别在于先自增还是后自增,比如当i=2时,a = ++i; 运算完后结果是i=3 a = 3;因为++i是先自增然后再把值赋给a,所以他们都是3;对于a = i++;结果是i = 3,而a = 2;因为,这个i后自增,先把i的值赋给了a然后i自增,所以a=2 i=3;
对于你这个题不管是i++还是++i都是一样的,因为你加了括号,所以要先运算括号中的内容,运算结果是(6)+(7)+(8)=21而i=8
luliily
2011-12-29
打赏
举报
回复
i++是先使用i的值,再自加
++i是先自加,再使用i的值
我学C/C++的时候老师就是这样说的,你先读点代码,遇到多了也就很快理解了
blinwen
2011-12-29
打赏
举报
回复
一楼说的很好,很通俗
hondely
2011-12-29
打赏
举报
回复
20 8 吧
iamnobody
2011-12-29
打赏
举报
回复
http://topic.csdn.net/u/20110826/09/601ebe9c-c2ae-4d63-a4e2-506c618bb654.html?10206
今天第四次贴这个链接了,,,,不要看老谭的书,害人不浅!!!!!!!!!!!!!
fyk810888
2011-12-29
打赏
举报
回复
七楼的哥们,照你那样解释也应该是6+7+7,最后调用i的时候才是8,现在的计算机教育真坑爹,这种问题好无意义。。。不同的C++系统输出结果不一样,建议看看裘老关于这方面的解释。。。
老孬斌
2011-12-29
打赏
举报
回复
i++是 i=i i=i+1
++i是 i=i+1 i=i
Enter空格
2011-12-29
打赏
举报
回复
这种问题,反汇编是解决之本。
牙牙学语
2011-12-29
打赏
举报
回复
这种东西很无聊呀,很无聊
iamnobody
2011-12-29
打赏
举报
回复
楼主怎么还不结呢???见10楼链接..
不要看老谭的书!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
jijiyuyisheng
2011-12-29
打赏
举报
回复
应该是20 8
不过感觉这种题目很无聊的。都TM找抽
苹果皮
2011-12-29
打赏
举报
回复
[Quote=引用 4 楼 shenandyi 的回复:]
为什么不是 20,8 呢??
[/Quote]
我也以为是20,8 !!!!
卡卡_苏米
2011-12-29
打赏
举报
回复
哎 这都是没事找事干的
AlburtHoffman
2011-12-29
打赏
举报
回复
这个表达式的求值在C/C++中是未定义的,具体的求值过程见具体的编译器实现。
楼主可以认真阅读下面这篇文章
《C/C++中的表达式求解和序列点概念》
一般来说,不推荐在一个表达式中使用两个以上的自增自减操作符。那样的表达式基本上是未定义的。
超级僵尸
2011-12-29
打赏
举报
回复
i=3,m=3;
j=(++m)-(++m);
k=(++i)+(++i);
输出结果是i=5,m=5,j=0,k=0
i=3,m=3,n=3;
j=(++m)-(++m)+(++m);
p=(++n)*(++n)*(++n);
k=(++i)+(++i)+(++i);
输出结果是i=6,m=6,n=6,j=6,p=150,k=16
个人分析:平级的++i是两个同时算的(可能与加减乘除是双目运算有关,算完之后再算第三个。所以前两个相同,都是5,第三个是6。
比如S=A+B+C+D
先算S1=A+B,S=S1+C+D
然后S2=S1+C,S=S2+D
即从左到右两个运算一次,因为加减乘除都是双目运算,所以两个进行一次运算
k=(7+7)+(i++)=14+(i++)=14+7=21;同时算前两个++i,i立即变为7,i++在这条语句后变为8
帅得不敢出门
2011-12-29
打赏
举报
回复
无意义的问题呀
楼主是自寻烦恼
而且为什么还有一堆的人也跟着?
10楼 链接 为标准答案。
achiever1992
2011-12-29
打赏
举报
回复
谢谢各位踊跃发言,这种2B题目确实很坑爹。。。
wangjieest
2011-12-29
打赏
举报
回复
[Quote=引用 27 楼 zoelov 的回复:]
i++和++i的区别在于先自增还是后自增,比如当i=2时,a = ++i; 运算完后结果是i=3 a = 3;因为++i是先自增然后再把值赋给a,所以他们都是3;对于a = i++;结果是i = 3,而a = 2;因为,这个i后自增,先把i的值赋给了a然后i自增,所以a=2 i=3;
对于你这个题不管是i++还是++i都是一样的,因为你加了括号,所以要先运算括号中的内容,运算结果是(6)+……
[/Quote]
括号能作为i++的分割点么?
KK_Liang
2011-12-29
打赏
举报
回复
这个正解。
1. ++i //i 为6
2. 第二个++i // i为7
3. (++i)+(++i) 和为14 ,i值为7
4. 最后(i++) 与14和为21 i值加1 为8
最后结果 k 值为21 i值为8
7楼的兄弟,不能把括号内的值一个一个算完在相加,虽然结果很想。++无视括号的
[Quote=引用 14 楼 yuan512341959 的回复:]
4: int i=5,k;
00401058 mov dword ptr [ebp-4],5 [ebp-4] = 5
5: k=(++i)+(++i)+(i++);
0040105F mov eax,dword ptr [ebp-4] eax = 5
00401062 add eax,1 eax = 6
00401065 mov d……
[/Quote]
加载更多回复(18)
蓝桥杯比赛 NOC竞赛
C++
项目
选择题
真题和模拟题汇总
蓝桥杯比赛 NOC竞赛
C++
项目
选择题
真题和模拟题汇总适合备赛。
蓝桥杯比赛 NOC竞赛
C++
项目,
选择题
真题和模拟题汇总答案解析
题目来源:第10届蓝桥杯青少年组
C++
选拔赛1、下面哪个密码最安全 DA. 111111 B. 123456 C. qwerty D. Z2a8Q12、如果今天是星期六,再过60天是星期几?AA. 星期三 B. 星期四 C. 星期五 D. 星期六3、90到100之间有几个素数?BA. 0 B. 1 C. 2 D. 34、下列几个32位IP地址中,书写错误的是( C )A. 162.105.128.2 B. 192.168.0.1C. 256.256.129.1 D. 10.0.0.15、下列4种不
C++
面试必备:常见
C++
面试题汇总及详细解析
引用也是
C++
中的一种数据类型,它提供了一种简洁而高效的方式来操作变量和对象,而不需要拷贝它们本身。引用被视为原变量的
一个
别名,其操作类似于指针,但是引用不能被赋值为NULL,也不能进行指针运算。虚函数是
C++
中的一种特殊函数,它可以实现多态性。当
一个
类中包含至少
一个
虚函数时,它就被称为虚类或抽象类。这些虚函数由子类重写,使得它们可以根据需要对基类的行为进行扩展和修改。通过使用虚函数可以实现动态绑定和运行时多态。以上是一些常见的
C++
面试题及其答案,当然可能还有其他的问题涉及到了更深入的知识点。
C++
常见面试题
第一篇 1、在函数内定义
一个
字符数组,用gets函数输入字符串的时候,如果输入越界,为什么程序会崩溃? 答:因为gets无法截断数组越界部分,会将所有输入都写入内存,这样越界部分就可能覆盖其他内容,造成程序崩溃。 2、
C++
中引用与指针的区别 答:联系:引用是变量的别名,可以将引用看做操作受限的指针; 区别: 1) 指针是
一个
实体,而引用仅是个别名; 2)引用只能在定义时必须初始化,指针可以不初始化
如果一定要在
C++
和JAVA中选择,是
C++
还是java?
C++
和Java都是广泛应用于软件开发领域的高级编程语言。它们都有着各自的优势和适用场景,因此在进行选择时需要考虑到具体的需求和使用情况。 首先,
C++
是一种面向对象的编程语言,它允许程序员直接控制计算机硬件,而且拥有较低的底层抽象层次,可以更好地进行系统编程和嵌入式系统设计。在这方面,
C++
比Java更适合开发大型、高性能的系统级应用程序,并且
C++
的运行速度也比Java更快,这使得
C++
常被用来编写要求高性能的程序,比如操作系统、数据库管理系统等。
C++ 语言
65,187
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章