关于C++运算顺序的记录
关于C++运算顺序的记录
不言仙声这两天因为自考的题目在研究一个很让我不理解的知识点,那就是关于C++表达式的运算顺序。其中加减乘除那些都还好,唯一让我感到头疼的是前置++和后置++。在浏览了网上的不少大佬的详解后,才算慢慢的找到一些自己的理解方式,特此记录。
首先感谢大佬的文章
一文搞懂C++常见运算符优先级_c++ 运算优先级_sarexpine的博客-CSDN博客
然后是自己的理解
首先是那时候疑惑的问题
我最初看完sarexpine大佬的博客之后,我对前置后置运算的理解就是,前置是先+/-1,然后再进行运算。而后置是先进行运算,而那个元素再这个表达式外自行+/-1 。但是后来有个题目让我比较懵逼。
1 | #include <stdio.h> |
运算结果就是c=12,我想,不对啊?这表达式写出来不是c = 5 + 2 + 4 等于11吗?怎么就12了?然后看到左结合和右结合的名词,捣鼓一番后才终于理出了思路。
我的惯性思维其实是错误的,那就是整个表达式c = a++ + b++ + –a这个表达式执行完之后,才算完成。但是按照上面的结论来看,其实运行过程是这样的:
先–a,也就是5-1=4,此时a=4
然后是b++和a++,此时b=3,a=5,注意!这里已经直接把转变后的值放在表达式了,也就是说带入进表达式的值是他们++后的值,是不是类似于++a和++b?是的,我也没懂,但就是如此。
评论
匿名评论隐私政策
TwikooWaline
✅ 你无需删除空行,直接评论以获取最佳展示效果