小言_互联网的博客

C语言剖析--- ++操作符

335人阅读  评论(0)

C语言剖析— ++操作符

可以先看下面有段代码

int main()
{
    int k = 2;
    int a = 1;
    
    k = k++ + k++;
    printf("k = %d\n", k);
    
    if( a-- && a )
    {
        printf("a = %d\n", a);
    }
    
    return 0;
}

这里运行的答案是(这里使用的编译器是用linux gcc 编译器)

K=6

为什么呢,我们先分析:

 k = k++ + k++;

这里有两个k++操作,但是在同一条语句上,这里实际上是先取当前k的值而不是取k++后的值所以这两次++的操作在这条语句上并没有执行,所以此时 k=4;
OK ,来到打印语句 printf(); 这个时候两个++操作开始生效了,此时的k的值会进行两次++操作所以最后打印就是上面的结果.
(PS:上面的过程可以用VS这个IDE进行调试,然后打开汇编就可以了解到这个实际过程)

好了那么可能现在还有一个疑惑:

if( a-- && a )

为什么这个条件判断不成立呢
这里涉及到C语言的顺序点的问题, 顺序点是C语言中变量修改的最后时机
C语言里面 ; && || ? 都是顺序点, 意思是遇到这些符号之前的变量操作就会执行修改保存

OK 知道这些那么 回到问题 上面的 if( a-- && a ) 为什么不执行的问题就很清晰了
因为 if语句中 && 是顺序点 所以前面的 a–会执行自减操作 得到a==0 所以条件不成立

参考自
狄泰 C语言深度解析


转载:https://blog.csdn.net/qq_41161063/article/details/101845977
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场