你真的理解i++和++i吗

各种版本的教材上都写了i++和++i的用法 但你真的理解了吗?

++i 先将i加1 再返回i

i++ 先返回i的值的一份拷贝 然后再将i加1 这个表达式的值是i原来的值的一份拷贝

示例:1

#include<stdio.h>
void main(){
int test1=0,test2=0;
int i=100;
test1=i++;
test2=++i;
printf("test1的值为:%d",test1);
printf("test2的值为:%d",test2); 
}

输出:test1的值为:100
          test2的值为:102

分析:i++先返回i的一份拷贝然后i自增1,即test1的值为i的拷贝值为100 然后i值自增1 i的值变为101

          继续执行下一句++i,先将i加1,i变为102,然后返回i,所以test2的值为102

以上内容有c语言基础的基本都了解。

示例2:

#include<stdio.h>
void main(){
    int test=10;
    int i=100;
    ++i=test;
    printf("i的值为:%d\n",i);
    printf("test的值为%d\n",test);
 }

你会不会觉得这样的写法根本就是错误的?没关系,楼主我原来也这么认为(谁叫我是小菜呢 哈哈哈)

分析一下:前面说过 ++i是先将自加1 然后返回i 说明++i是即可以是左值 也可以是右值

++i=test 相当于给i变为101后返回i 又重新将test的值赋给i 即i此时的值为10,test值没有变化

输出:i的值为:10
          test的值为10

实例3:

可能有人会问了 既然++i=test 是正确的写法 那 i++=test是不是一样可以呢?

别急吗 我们来分析一下 上面说过 i++ 是返回i的值的一份拷贝 后i自加1  所以这条语句相当于 将 100=test=10  明显错误


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值