c++-C++字符输出小问题_自身++和+1在cout输出的时候不一致

问题描述

C++字符输出小问题_自身++和+1在cout输出的时候不一致
char ch='A';

1:ch=ch+1;
cout<<ch<<endl;——输出的就是B

可是为什么
2:cout<<ch++;——输出的就还是A,这个我明白了,下面那个是怎么回事?

3:cout<<ch+1;——输出的就是66了呢

解决方案

ch是char类型的,ch=ch+1的时候,右边的ch因为要和整数做加法而隐式转换类型为int型和1相加等于66,然后把这个值又赋值给一个char型变量左边的ch,所以你的问题1中打出来的是B。
问题3中就没有这个赋值的过程,直接就当作int型来输出了。

解决方案二:
cout输出小问题

解决方案三:
ch++是在打印之后再自加吧?

解决方案四:
ch+1不再是char类型了

解决方案五:
ch+1是一个表达式,在计算的时候ch会自动提升成整型,那么整个表达式的结果也就是一个整形的临时变量,即65('A'的ASCII值)+1,就是66

解决方案六:
cout<<ch++;这个是后++哦,将之前的值参与计算(即'A')然后才自增1变成了('B')
楼主在cout<<ch++;这句之后再加一句cout<<ch;就很清楚了

解决方案七:
char ch='A';

ch=ch+1; 执行'A'+1---字符可以与数字做 加减法,表示该字母向前、后位移后的字母,'A'+1就是B

时间: 2024-08-02 20:28:06

c++-C++字符输出小问题_自身++和+1在cout输出的时候不一致的相关文章

Python中输出ASCII大文字、艺术字、字符字小技巧

  这篇文章主要介绍了Python中输出ASCII大文字.艺术字.字符字小技巧,本文首先给出了ASCII大文字.艺术字.字符字的图片效果,然后给出了Python中的实现方法,需要的朋友可以参考下 代码如下: display text in large ASCII art fonts 显示大ASCII艺术字体 这种东西在源码声明或者软件初始化控制台打印时候很有用. 例如下图: 这是查看HTML源码中截图而来,看到这种字体的网站名称,很cool,下面就介绍一下Python中如何输出这种字符字. 代码

foreach-link中从大到小排序的问题,这么写为什么输出不了?

问题描述 link中从大到小排序的问题,这么写为什么输出不了? public static void Main(){ int[] arr = {1620358}; paixu(arr);}public static void paixu(IEnumerable<int> arr){ if (arr.Count() == 0) return; int max=arr.Max(); foreach (int n in arr.Where(x=>x==max)) Console.WriteLi

jQuery实用小技巧_输入框文字获取和失去焦点的简单实例_jquery

jQuery实用小技巧_输入框文字获取和失去焦点的简单实例 <input id="txt" class="text1" type="text" /> <script src="js/jquery-1.7.1.min.js"></script> <script type="text/javascript"> $(function () { $("inp

c++-函数中字符串用cout输出与字符串长度没有关系吧!

问题描述 函数中字符串用cout输出与字符串长度没有关系吧! 下面的代码运行于VS2012的编译环境,目的是为了对出现的19个国家名称进行按大到小排序,遗憾的是,结果结果并没有得出. 但有一点,若是将主程序中的 pCountryName这一指针数组中的"United States of America"缩减一个字符如变为"United State of America",程序将运行无恙. 同样的代码,放置于Vc++6.0的编译环境却不会出现问题! 程序在执行过程中,

volume table-蓝牙模块开发音频音乐输出中,如何调大模块的音频输出?

问题描述 蓝牙模块开发音频音乐输出中,如何调大模块的音频输出? 现在在做蓝牙模块开发,在使用CSR公司提供的Music Manager工具调音频的效果.其中有一项是"Speak Gain Settings",而这一项中的最大值为 0-F(0dB,音量大小为+15).现在我想要蓝牙模块输出为2dB(手机连接蓝牙模块后,手机播放1KHZ 0dB的测试信号,从模块中音频输出经电容去掉直流后的信号为2dB),我把其调到最大值0-F时输出的dB仍太小.我就在想是否有一个工具或者什么方法是否能加大

C语言图案输出诡异的问题,这两个代码输出的图案有什么不同??

问题描述 C语言图案输出诡异的问题,这两个代码输出的图案有什么不同?? #include<stdio.h> void main() {int i,j,k; for(i=1;i<=4;i++) {for(j=1;j<=4-i;j++) printf(" "); for(k=1;k<=2*i-1;k++) printf("*"); printf(" ");} for(i=1;i<=3;i++) {for(j=1;j

你好 elm分类输出真实数据然后对于接下来进行类别输出部分我不懂它是如何类别分类的

问题描述 你好 elm分类输出真实数据然后对于接下来进行类别输出部分我不懂它是如何类别分类的 下面是进行类别输出 MatrixXd tempY=mScores; //int size=tempY.size(); double *Y=new double[nsmp]; double *Max=new double[nsmp]; double max=0.0; double *min=new double[nsmp]; for(int i=0;i { min[i]=tempY(0,i); } for

为什么视频上这个代码输出的是1 2,我自己运行输出的是2 1?

问题描述 为什么视频上这个代码输出的是1 2,我自己运行输出的是2 1? int main(){int a=1;int b=2;swap(ab);printf(""%d %d""ab);}void swap(int a int b){int t=a;a=b;b=t;} 解决方案 下断点调试了下,swap(ab);根本没有执行你定义的那个,而是系统标准库的那个,所以交换成功了. 解决方案二: 如果在使用之前声明了swap函数,两个数字也不会交换的,因为是传的值,而不是

c语言-以下程序段的输出结果为()。以下程序段的输出结果为()。

问题描述 以下程序段的输出结果为().以下程序段的输出结果为(). 以下程序段的输出结果为(). for(i=4;i>1;i--) for(j=1;j<i;j++) putchar('#'); A:无 B:###### C:# D:### 解决方案 http://codepad.org/Dx03V6jk ###### 解决方案二: 因为第一个for循环体只有一个语句就是第二个for循环,所以这段代码本质上等价于下面的代码: for(i=4;i>1;i--) { for(j=1;j<