a++与++a的区别及一些栗子

a++与++a的区别及一些栗子

引子

最近看到一道题是这样的:
先给出你下列代码:

#include<stdio.h>
int main(void)
{
 char ch;
 while ((ch = getchar()) != '\n') {
  putchar(ch++);
  putchar(++ch);
 }
 return 0;
}

问当输入 Harhar 会输出什么?
想要做出这道题,就必须明白++a与a++两种自增的区别

正文

  • 它们都具有使a的值增加1的作用
#include<stdio.h>
int main(void)
{
 int a = 1;
 a++;//++a;
 printf("%d", a);
 return 0;
}

输出a的值都是 2

  • 当与赋值符号 “ = ” 连用
  1. a++是先执行表达式后再自增,执行表达式时使用的是a的原值
#include<stdio.h>
int main(void)
{
 int a, y;
 a = 1;
 y = a++;
 printf("%d", y);
 return 0;
}

输出的y的值为 1

  1. ++a是先自增再执行表达示,执行表达式时使用的是自增后a的值
#include<stdio.h>
int main(void)
{
 int a, y;
 a = 1;
 y = ++a;
 printf("%d", y);
 return 0;
}

输出的y的值为 2

  • 直接输出这两种自增
  1. a++
#include<stdio.h>
int main(void)
{
 int a;
 a = 1;
 printf("%d", a++);
 return 0;
}

输出 1

  1. ++a
#include<stdio.h>
int main(void)
{
 int a;
 a = 1;
 printf("%d", ++a);
 return 0;
}

输出 2

  • 一种常见的自减
#include<stdio.h>
int main(void)
{
 int t = 3;
 while (t--) {
  printf("Hellow world!\n");
 }
 return 0;
}

输出为:
Hellow world!
Hellow world!
Hellow world!

结尾

此时再来看刚开始的这道题,当输入Harhar时, putchar(ch++) 会将原来的字母原样输出,此时的ch的值已经自增 ,因此putchar(++ch) 会将原来字母对应的ASCII码加 2 所对应的字母输出
Output:
HJacrthjacrt

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值