免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2438 | 回复: 6
打印 上一主题 下一主题

[C++] 正确理解c/c++中字符连在一起的运用 [复制链接]

论坛徽章:
2
丑牛
日期:2014-05-15 09:31:39IT运维版块每日发帖之星
日期:2016-08-19 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-05-26 14:39 |只看该作者 |倒序浏览
在学习c/c++中我们经常看到字符连在一起时的使用,看起来确实比较混淆,这就要看大家怎样去分析了。下面我就举两个例子,大家一起来来看看~~
       例一:首先说明一下下面的代码是合法的,编译通过的
  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int x=10;
  6.   while (x-->0)
  7.   {
  8. cout<<x<<endl;
  9.   }
  10. }
复制代码
结果是9  8 7 6 5 4 3 2 1 0,毫无疑问结果是没问题的。没错,-->只是两个操作符恰好遇在了一起,他们是自减运算符--和大于比较运算符>:是一个合法的操作符。这里好多学习c/c++的你们都不知道这个操作符。有人称它为goes to操作符,x-->0表示x向0趋近—当然这只是我个人的定义,觉得这两个字符连在一起还是比较特殊的。
       与前面相类似的有
  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.      int x = 10;
  6.      while (x -- \
  7.                   \
  8.                    \
  9.                     \
  10.                      > 0)
  11.      {
  12.        cout<<x<<endl;
  13.      }
  14. }
复制代码
结果是一样的哦
例二:我相信这是大家在学习过程中经常看到的
解决这类问题需要懂汇编,另外与编译器也有关系。
这里只是我的理解,也不一定权威哦……
  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int i = 1;
  6. int j = (i++)+(i++)+(i++);
  7. i = 1;
  8. int k = (++i)+(++i)+(++i);
  9. cout<<j<<"-"<<k<<endl;
  10. }
复制代码
为什么这里j是3,而k是10呢?
j = 3 是因为i++是先运算之后然后才进行++,因此它的结果是3
而k = 10 是因为++i是先++,然后才运算,但是并不是等所有的加完之后才运算,并不是9,而是利用贪吃法先进行 k = ((++i) + (++i)) + (++i) 也就是 k = (3 + 3) + 4 = 10

计算这类问题是一定要弄清楚实质
++i为前置自增,i++为后置自增,前者i先加1再参加其他运算,后者i先参加其他运算再加1,如果单独一条语句i++;或++i;两者运行效果相同,比如for(int i=0; i<10; i++)和for(int i=0; i<10; ++i)实现的功能一样,比如
int i = 0, j;
j = i++;运行结果为i为1,但是j为0
int i = 0, j;
j = ++i;
运行结果为i为1,但是j为1

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
2 [报告]
发表于 2015-05-26 14:52 |只看该作者
这里好多学习c/c++的你们都不知道这个操作符 搞笑
解决这类问题需要懂汇编 瞎扯

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
3 [报告]
发表于 2015-05-26 15:06 |只看该作者
这种ID应该是被盗号的,养一阵子,以后发广告什么的

论坛徽章:
12
巳蛇
日期:2013-09-16 15:32:242015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之约旦
日期:2015-02-11 14:38:37双鱼座
日期:2015-01-05 11:05:47戌狗
日期:2014-12-08 09:41:18戌狗
日期:2014-08-15 09:29:29双子座
日期:2014-08-05 09:17:17卯兔
日期:2014-06-08 15:32:18巳蛇
日期:2014-01-27 08:47:08白羊座
日期:2013-11-28 21:04:15巨蟹座
日期:2013-11-13 21:58:012015年亚洲杯之科威特
日期:2015-04-17 16:51:51
4 [报告]
发表于 2015-05-26 15:28 |只看该作者
http://www.cppblog.com/kevinlynx/archive/2014/09/16/189272.html

原文里关键的一句:其实我在忽悠你们

估计在反复转载、添油加醋中被曲解了,变成了这个样子:
http://blog.csdn.net/liuyang1990i/article/details/8008401

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
5 [报告]
发表于 2015-05-26 16:21 |只看该作者
唉,吐完槽才没几天,就又看见(i++)+(i++)+(i++)这种东西了……

重复一遍
谁写这种代码谁SB

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:50:28
6 [报告]
发表于 2015-05-26 16:33 |只看该作者
windoze 发表于 2015-05-26 16:21
唉,吐完槽才没几天,就又看见(i++)+(i++)+(i++)这种东西了……

重复一遍

我也吐槽一遍:谁研究这种代码谁SB
结论是LZSB。

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:032015年亚洲杯之中国
日期:2015-04-22 15:52:45
7 [报告]
发表于 2015-05-26 16:58 |只看该作者
noword2k 发表于 2015-05-26 16:33
我也吐槽一遍:谁研究这种代码谁SB。
结论是LZSB。

我也吐槽一遍:谁发这种帖子谁SB。

CU都是被你们这群广告B给毁了....都没什么人气了, 还养马甲, 养你麻B

建议版主以后碰到练习, 以及各种养帖的, 直接封杀账号了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP