类似cout<<a[len1--]<<endl;这样子的表达形式探秘
来源:互联网 发布:linux命令view 编辑:程序博客网 时间:2024/05/17 22:55
昨天学习写大数加法的时候遇到了一条语句让我非常困惑。。。。。。
sum = last+s[len1--]-'0'+s2[len2--]-'0';
大概是类似这种形式,就是在一个字符串的下标用了自增自减的这样子一种表达形式,为了解决这个疑惑,自己写了个小检验程序。
就是这样子的一个检验程序,我们可以看见,a字符串是一个大小为3,内容为123的字符串。b字符串是一个大小为3,内容为456的字符串。
设定了两个数值,lenA和lenB的值都是2(为什么不设3,因为会越界。。。。。。如果你看懂了就应该知道为什么越界了。。。。。。)
首先我们进行第一次输出,输出a[lenA--]和b[lenB--],我们可以看见,输出的是3和6,3在a的下标为2,6在b的下标也是6,所以说,这种表示方法,在表达上(没有完成lenA和lenB的自减操作,所以写在表达上)等价于
cout<<a[2]<<endl
cout<<b[2]<<endl;
最后输出lenA和lenB都是1,也就是说都进行了自减操作。
再看下面一种表达形式,输出了2和5,2在a的下标为1,5在b的下标也是1,所以说,这种表示方法,在表达上(没有完成lenA和lenB的自减操作,所以写在表达上)等价于cout<<a[1]<<endl
cout<<b[1]<<endl;
最后输出lenA和lenB都是1,也就是说都进行了自减操作。
这样子我们就清晰了,也就是说,这两种表达方法都可以实现对应参数的自增自减操作,只是在执行这条语句的时候,是用自增自减操作前的值还是操作后的值。
相信看到这里,你也懂了为什么我一开始没有设lenA和lenB的值是3的缘故了。
- 类似cout<<a[len1--]<<endl;这样子的表达形式探秘
- cout << s.c_str() << endl;和cout << s << endl;的区别
- cout<<endl;与cout<<"/n";的区别
- cout<<endl
- 关于cout<<1; cout<<endl;和cout<<1<<endl;的解析
- cout<<"a1="<<a<<endl; cout<<"a2="<<-0x80000000<<endl;
- C++ 中cout<<endl的实现
- “cout” "endl“: 未声明的标识符”是怎么回事
- 语句std::cout<<std::endl的作用
- cout的输出形式
- cout<<"Hello World"<<endl;
- cout<<endl 本质解析
- cout<<endl;什么意思?
- cout<<hex<<u.i<<endl 《程序员》的一道union题目
- 详解让C++新手闹心的语句“cout<<"Hello!"<<endl;”
- C++中cout、cin和endl的用法
- cout < <true?1:"1" < <endl;
- cout < < __FILE__ < < __LINE__ < < __FUNCTION__ < < endl
- 局域网聊天室
- 217. Contains Duplicate
- 花园
- 人工智能(AI)
- echarts路径
- 类似cout<<a[len1--]<<endl;这样子的表达形式探秘
- bzoj 1412
- Developer Notification (set struts.devMode to false to disable this message)报错
- 实验吧奇怪的字符串
- kotlin.jvm.internal.FunctionReference与Kotlin-kapt插件使用
- spring boot之端口设置和contextpath的配置
- 让java从Mysql返回多个ResultSet
- 欧拉线性筛模板
- 用邻接矩阵求无向图的连同分支数