学编程的盆子 发表于 2021-2-23 14:58:46

求助大佬们一个自增型的问题!

#include<stdio.h>
int main()
{
    int a = 2,b = 3,c,a2,b2;
   
    a2 = ++a;
    b2 = b++;
   
    printf("a2 = %d\nb2 = %d",a2,b2);
    return 0;
}

这个程序输出的 a2 = 3, b2 = 4;

#include<stdio.h>
int main()
{
    int a = 2,b = 3, c;
    c = ++a + b++;
    printf("c = %d\n",c);
}

为啥这个程序输出的c = 6呢,意思是a先赋值2给了表达式然后计算完了在增加吗?

qiuyouzhi 发表于 2021-2-23 15:13:01

自增运算符是会改变变量自身的..你再带进去算算

学编程的盆子 发表于 2021-2-23 15:21:50

qiuyouzhi 发表于 2021-2-23 15:13
自增运算符是会改变变量自身的..你再带进去算算

对 确实会改变。有点像静态变量的性质一样我感觉

qiuyouzhi 发表于 2021-2-23 15:22:47

学编程的盆子 发表于 2021-2-23 15:21
对 确实会改变。有点像静态变量的性质一样我感觉

和静态变量有啥关系

shake_a_tree@16 发表于 2021-2-23 15:24:13

c = ++a + b++;
++a表示先自增后运算,即a=2+1=3,再参加加运算
b++表示先运算后自增,即b先参加加运算,然后b=3+1=4
参加加运算的两个数字是3和3,结果就是6

siaj 发表于 2021-2-23 15:26:46

第一个程序结果应该是 a2 = 3, b2 = 3。 b2 = b++,应该是先把b的值赋给b2,然后再自增。
第二个程序也是这样的a先自增加上b赋值给c,然后b再自增,也就是说c=3+3

学编程的盆子 发表于 2021-2-23 15:27:11

shake_a_tree@16 发表于 2021-2-23 15:24
c = ++a + b++;
++a表示先自增后运算,即a=2+1=3,再参加加运算
b++表示先运算后自增,即b先参加加运算, ...

#include<stdio.h>
int main()
{
    int a = 2,b = 3,c,a2,b2;
   
    a2 = ++a;
    b2 = b++;
   
    printf("a2 = %d\nb2 = %d",a2,b2);
    return 0;
}

那对于这种,可以理解他就是算完存入新值再输出吗

shake_a_tree@16 发表于 2021-2-23 16:35:06

学编程的盆子 发表于 2021-2-23 15:27


++在前就是先自增后运算,++在后就是先运算后自增
现在的代码,a2和b2应该都是3
页: [1]
查看完整版本: 求助大佬们一个自增型的问题!