前置递加与后置递加
来源:互联网 发布:天人网络电视安卓版 编辑:程序博客网 时间:2024/06/05 09:10
偶然在网上看到一道题,但是好像回答者并没有讲明白,研究一下好像是这么个原理,顺便记录下来
1 #include<iostream> 2 using namespace std; 3 int main(){ 4 char str1[10]="abc",str2[10]="ABC"; 5 char *p1=str1,*p2=str2; 6 while(*++p1);//如果是前置就会得到abcABC 7 // while(*p1++);//后置abc 8 /*由于*p1++ 是先递加,后取值,但是递加是后置的,所以取到的值依然是递加之前的值,所以当取到'\0'结束标志时,p1已经指向第二个结束标志了。*/ 9 10 11 /*str1[]开始是这样的: {‘a','b','c',\0,\0,\0,\0,\0,\0,\0} 12 p1一开始是指向str1的第一个字母'a'的,经过 while(*p1++);之后,p1是指向了第5个(注意不是第4个)字符 \0,此时 13 再执行 while(*p1++=*p2++),结果是str1变成了这样:{‘a','b','c',\0,‘A’,‘B','c',\0,\0,\0} 此时输出str1,因为第4个字符是\0,字符串到此结束,所以只 14 输出前三个字母abc,而不是abcABC.*/ 15 16 while(*p1++=*p2++); 17 cout<<str1<<endl; 18 return 0; 19 }
1 #include<iostream> 2 using namespace std; 3 int main(){ 4 char str1[10]="abc",str2[10]="ABC"; 5 char *p1=str1,*p2=str2; 6 while(*p1!='\0')//等价于while(*p1) 7 p1++;//*p1++结果也是一样的 8 while(*p1++=*p2++)//结果为abcABC; 9 cout<<str1<<endl; 10 return 0; 11 } 12
阅读全文
0 0
- 前置递加与后置递加
- 《More Effective C++》6:区别递加和递减符号的前置和后置形式
- 数码管递加递减带消隐
- 数码管递加递减带消隐
- 前置++与后置++
- 前置++与后置++重载
- Java初学者Paulmarkyes---自动递加和递减
- 前置++与后置++(转载)
- C 语言前置++ 与后置++
- 前置操作与后置操作
- ++/--前置与后置的区别
- C++中的前置++与后置++
- 不再纠结前置++与后置++
- 后置前置++--
- C++再学习系列:前置++与后置++
- ++运算符的重载前置与后置
- spring中前置通知与后置通知
- 前置与后置运算符的区别
- 【Mybatis从0到1-015】Spring与MyBatis整合原始开发DAO(不推荐使用)
- [NOIP模拟赛]保证的利润
- 深入JVM——类型的生命周期(二)
- 线段树讲义
- 依赖注入的几种配置方法
- 前置递加与后置递加
- Unity Inspector的简单绘制
- vue2.0 .vue文件非父子组件传值问题
- 常量与类型转换学习
- 机器学习---xgboost与lightgbm效果比较(2)
- 防止SQL注入的五种方法
- selenium 鼠标悬停事件
- Eclipse中演示Git冲突的解决
- tomcat线程配置