理解cout“从右至左入栈”
来源:互联网 发布:优酷会员淘宝不能买了 编辑:程序博客网 时间:2024/06/10 13:09
理解cout计算参数时是从右至左入栈。
自增运算符的优先级高于*。所以*++p不加括号,也相当于*(++p)
int main()
{
int a[5]={6,7,8,9,10};
int *p=a;
*(p++)+=123;//先取值用于赋值运算-->再自增:(*p=*p+123,p++),此时p指向7
cout<<*p<<" "<<*(++p)<<endl;//先指针自增,再取值用于输出:(p指向8,取值8)
return 0;
}
所以输出“8”“8”。
比较:
int main()
{
int a[5]={6,7,8,9,10};
int *p=a;
*(p++)+=123;//先取值用于赋值运算-->再自增:(*p=*p+123,p++),此时p指向7
cout<<*p<<endl;//输出7
cout<<*(++p)<<endl;//先指针自增,再取值用于输出:(p指向8,取值8)
return 0;
}
输出结果“7”、“8”。
int main()
{
int a[5]={6,7,8,9,10};
int *p=a;
*(p++)+=123;
cout<<*(++p)<<*p<<endl;
return 0;
}
输出结果“8”、“7”。
int main()
{
int a[5]={6,7,8,9,10};
int *p=a;
*(p++)+=123;
cout<<*(p++)<<*p<<endl;
return 0;
}
输出结果“7”、“7”。
自增运算符的优先级高于*。所以*++p不加括号,也相当于*(++p)
int main()
{
int a[5]={6,7,8,9,10};
int *p=a;
*(p++)+=123;//先取值用于赋值运算-->再自增:(*p=*p+123,p++),此时p指向7
cout<<*p<<" "<<*(++p)<<endl;//先指针自增,再取值用于输出:(p指向8,取值8)
return 0;
}
所以输出“8”“8”。
比较:
int main()
{
int a[5]={6,7,8,9,10};
int *p=a;
*(p++)+=123;//先取值用于赋值运算-->再自增:(*p=*p+123,p++),此时p指向7
cout<<*p<<endl;//输出7
cout<<*(++p)<<endl;//先指针自增,再取值用于输出:(p指向8,取值8)
return 0;
}
输出结果“7”、“8”。
int main()
{
int a[5]={6,7,8,9,10};
int *p=a;
*(p++)+=123;
cout<<*(++p)<<*p<<endl;
return 0;
}
输出结果“8”、“7”。
int main()
{
int a[5]={6,7,8,9,10};
int *p=a;
*(p++)+=123;
cout<<*(p++)<<*p<<endl;
return 0;
}
输出结果“7”、“7”。
阅读全文
0 0
- 理解cout“从右至左入栈”
- 重新理解c++中的cout
- 帮助理解cerr、cout、clog
- 对printf和cout一点理解
- C++中cout函数的理解
- C++中如何理解cout endl
- C++中cout <<与cin >>的理解
- 关于ostream_iterator<int>(cout," ")的理解
- ostream_iterator<int> output(cout ,"*"); 的理解
- cout
- [cout]
- cout
- C/C++---printf/cout 从右至左压栈顺序实例详解
- c++中++和*的优先级、cout运算从右到左
- printf、cout 取值输出问题,(从右向左求值,从左向右输出??)??
- 从概率论理解问题
- 从实践理解设计
- 从__proto__理解prototype
- 文章标题
- Anaconda中python安装模块命令
- IT 岗位版《王者荣耀》,告诉我你是农药里的谁?
- Maven阿里云镜像地址
- STM32一直死在r1,[r0,#0x808]
- 理解cout“从右至左入栈”
- Python高级之——浅拷贝、深拷贝(deepcopy、copy的区别)
- 好玩的线上检测代码工具-codewars(4)
- log4j2配置日志文件以时间方式显示
- webpack解惑:require的五种用法
- 【HDU
- java基础学习总结——基础语法1
- angular学习笔记(二)
- Oracle的Sql语句一些知识点(2)