c语言自增运算符和赋值


#include<stdio.h>
int main(){
    int cnt=0;
    for(int i=0;i<10;i++){
        cnt=cnt++;
    }
    printf("%d",cnt);

结果为什么会是0

怎么会是cnt=cnt++呢,++是运算符,不是函数。
这句改成cnt++就行了。
如果解决您的问题,选择解决采纳,谢谢。

【以下回答由 GPT 生成】

回答:

原因是由于cnt=cnt++这行代码存在问题。

C语言中++运算符有两种形式,前缀形式和后缀形式。前缀形式是将变量的值先加1然后再使用,后缀形式是将变量的值先使用然后再加1。

在上述代码中,cnt=cnt++这行代码中的++是后缀形式,意味着先将cnt的值进行赋值操作,然后再进行自增操作。但是由于C语言中对于赋值和自增操作的优先级的规定,赋值操作的优先级大于自增操作,所以先将cnt的值赋给了自身,然后再对cnt进行自增。所以最终的结果是,cnt的值没有发生变化,仍然是0。

而正确的写法应该是使用前缀形式的自增运算符,即将cnt的值先自增再进行赋值操作。修改方式如下:

cnt=++cnt;

代码修改后的正确版本如下:

#include<stdio.h>
int main(){
    int cnt=0;
    for(int i=0;i<10;i++){
        cnt=++cnt;
    }
    printf("%d",cnt);
}

这样修改后,输出结果就不再是0,而是10了。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^