正确理解c/c++中字符连在一起的应用

正确理解c/c++中字符连在一起的运用

       在学习c/c++中我们经常看到字符连在一起时的使用,看起来确实比较混淆,这就要看大家怎样去分析了。下面我就举两个例子,大家一起来来看看~~

       例一首先说明一下下面的代码是合法的,编译通过的

正确理解c/c++中字符连在一起的应用

结果是9  8 7 6 5 4 3 2 1 0,毫无疑问结果是没问题的。没错,-->只是两个操作符恰好遇在了一起,他们是自减运算符--和大于比较运算符>是一个合法的操作符。这里好多学习c/c++的你们都不知道这个操作符。有人称它为goes to操作符,x-->0表示x向0趋近—当然这只是我个人的定义,觉得这两个字符连在一起还是比较特殊的。

       与前面相类似的有

#include<iostream>
using namespace std;
int main()
{
     int x = 10;
     while (x -- \
                  \
                   \
                    \
                     > 0)
     {
       cout<<x<<endl;
     }
}

结果是一样的哦

 例二:我相信这是大家在学习过程中经常看到的

正确理解c/c++中字符连在一起的应用

为什么这里j是3,而k是10呢?

j = 3 是因为i++是先运算之后然后才进行++,因此它的结果是3
而k = 10 是因为++i是先++,然后才运算,但是并不是等所有的加完之后才运算,并不是9,而是利用贪吃法先进行 k = ((++i) + (++i)) + (++i) 也就是 k = (3 + 3) + 4 = 10

 

计算这类问题是一定要弄清楚实质

++i为前置自增,i++为后置自增,前者i先加1再参加其他运算,后者i先参加其他运算再加1,如果单独一条语句i++;或++i;两者运行效果相同,比如for(int i=0; i<10; i++)和for(int i=0; i<10; ++i)实现的功能一样,比如

int i = 0, j;

j = i++;运行结果为i为1,但是j为0

int i = 0, j;

j = ++i;

运行结果为i为1,但是j为1

亲 看完你有什么感受呢?有问题大家请指出,很乐意和大家一起学习,交流~~~

2楼ybl_5209小时前
学到了 呵呵
1楼todd_leftcode昨天 22:20
如果我没记错的话, (++i)+(++i)+(++i) 之类的分析并无实际意义。参见 Sequence Point, Side Effect。