C/C++语言中的未定义行为
来源:互联网 发布:软件学院毕业设计题目 编辑:程序博客网 时间:2024/06/05 11:02
今天写代码时,遇到了一个小问题,然后用程序验证了下,事实证明不是所有的事情都跟自己想的一样,许多事情都是编译器决定的。
如下面的等号操作:
#include <iostream>using namespace std;int main(){ int i(1); int array[5] {0}; array[i++] = i; //此时编译器从左到右计算,而不是从右到左,编译器先找到array[i],然后i++,等号右边的i已经是自加后的值2,所以array[1]=2 cout << array[1] << endl; cout << array[2] << endl; return 0;}
结果如下:
如果改为
array[i] = i;
则输出结果为:
所以说C/C++语言中有好多未定义行为,等号这种编译器并不一定先计算右边,然后赋值给左边,这些都是由编译器决定的。
0 0
- C语言中的未定义行为
- c语言中的未定义行为
- C语言未定义行为
- C/C++语言中的未定义行为
- C语言的未定义行为
- C语言未定义行为一览
- C语言未定义行为一览
- C语言的未定义行为
- C语言undefined behaviour未定义行为
- C语言undefined behaviour未定义行为
- C语言undefined behaviour未定义行为
- C语言undefined behaviour未定义行为
- C语言undefined behaviour未定义行为
- C语言undefined behaviour未定义行为
- 神奇的C语言--C语言未定义行为一览
- C语言的未定义行为(undefined behaviour)
- 关于C的未定义行为
- C/C++中未定义行为
- Mac Use
- java中字节流和字符流的区别
- Python爬虫urllib笔记(四)之使用BeautifulSoup爬取百度贴吧
- 好基友的开源服务器框架 测试TOLUA必备框架
- 从 bufferevent 实现学习 Libevent 的使用
- C/C++语言中的未定义行为
- Struts2概述
- xUtils工具四大功能模块:操作数据库、HTTP通信等
- oracle EXP-00028: 无法打开用于写入的 expdate.dmp
- three.js实现一个网格
- Unreal输出Log的方法
- java的poi技术读取Excel[xls,xlsx]
- kettle 工具的使用
- Mysql基础