C语言基础

C语言基础,c,C,我在linux终端中键入以下代码 #include <stdio.h> int main(void) { int a; a=1; printf("%d\n",a++); } 现在输出显示为1而不是2。为什么我要递增 a的值通过使用++运算符来计算,但存储在a中的值仍不会递增。请提供帮助。a++是递增后的。因此,它首先在使用它的位置赋值,然后递增 执行以下两个示例。您应该清楚地了解前置增量和后置增量之间的关系: int main(void) { in

我在linux终端中键入以下代码

#include <stdio.h>
int main(void)
{

    int a;
    a=1;
    printf("%d\n",a++);
}
现在输出显示为1而不是2。为什么我要递增
a的值通过使用++运算符来计算,但存储在a中的值仍不会递增。请提供帮助。

a++是递增后的。因此,它首先在使用它的位置赋值,然后递增

执行以下两个示例。您应该清楚地了解前置增量和后置增量之间的关系:

int main(void)
{
    int a, c;
    a = 1;
    c = a++; // assigns the value 1 to c and increments the value of a
    printf("a: %d and c: %d\n",a,c);
}

int main(void)
{
    int a, c;
    a = 1;
    c = ++a; // increments the value of a and then assigns it to c
    printf("a: %d and c: %d\n",a,c);
}
在C语言中,后缀操作符++在使用变量后增加变量的值。所以你的陈述相当于

printf("%d\n",a);
a += 1;
通过使用前缀++,可以实现您预期的行为:

这相当于:

a += 1;
printf("%d\n", a);

请用谷歌搜索增量前和增量后的差异。这应该包含在几乎所有的C语言书籍和教程中。Linux终端不会执行C代码,这对于任何shell都应该是正确的。Google down?在这里发布一个问题比搜索你自己要容易得多??a++的结果是增量之前a的值;使用++a获得您期望的结果。请注意,在这两种情况下,对a的更新都是对表达式求值的副作用。@chux:我同意其质量,但在我看来,它显然低于标准,很像一个简单的打字错误。它表明,没有研究和一个答案可以找到比张贴在这里一个问题更容易。如果这样的问题被接受,这难道不是一个辅导/教学网站吗?
a += 1;
printf("%d\n", a);