关于cout 输出 char 型字符 ++ch和 ch+1 不同的结果(直接看详解)

一、简述

今天在做练习题时注意到了之前所没有注意到的问题:
若给同样的 ch ,cout << ++ch; 与 cout << ch+1; 输出后的结果不一样。
浅思之后明白了,其实这个现象解释起来不难,细心一点就能够解释。

二、代码

#include<iostream>
using namespace std;

int main()
{
	char ch;
	cin.get(ch);       //cin.get()读取缓冲区中第一个字符

	//此时读取的字符不是 '.' 则进入循环,并继续输入
	while (ch != '.')    
	{
		if (ch == '\n')   //若为换行符则输出 ch 
			cout << ch;
		else      //否则将 ++ch 输出
			cout << ++ch;
		cin.get(ch); 
	}

	return 0;
}

输入 I love you, 回车后输出 J!mpwf!zpv-
再次输入 but I love my job even more. 回车后输出cvu!J!mpwf!nz!kpc!fwfo!npsf
细心的小伙伴发现了没有,输出的这些字符,其 ASCII 码值与我们输入字符的 ASCII 码值有什么关系?

当把cout << ++ch 换为 cout << ch + 1后,输出均变为数字

三、详解

1.++ch
递增运算符 ++,它作为前缀和后缀在某些语句中会有区别,这个理解起来也不难,但有人可能还是会糊涂,这里用一个小例子解释一下:

	int x = 1;
	int y = ++x;
	cout << "x = " << x << ", " << "y = " << y << endl;
	/* 最终得到 x = 2, y = 2 */
	int z = 1;
	int y = z++;
	cout<<"z = "<<z<<", y = "<<y<<endl;
	/* 最终得到 z = 2, y = 1 */

由此可见,++在前表示先加再赋值,在后表示先赋值再加。递减–也是同样的道理。
进入正题,++ch 是指将 ch 里面的字符的 ASCII 码 +1,再转换为 +1 后ASCII 码值所对应的字符,赋给 ch。所以说,通过语句 cout << ++ch;输出的是一个字符
2. ch + 1
ch + 1 是指将 ch 里面的字符的 ASCII 码 +1后直接输出。所以说,通过语句 cout << ch + 1;输出的是一个数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

粉红橘红橘粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值