为什么char类型有时输出阿斯克码,有时输出字符

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    char a[3]={'2','5','A'};
    cout<<a[1]+a[2]<<endl;
    cout<<a[1]<<" "<<a[2]<<endl;
}

请问为什么第一行输出的是118,就是1的阿斯克码和2的阿斯克码,第二行就输出的是5和A,不输出5的阿斯克码和A的阿斯克码,谢谢!

a[1]+a[2],这个类型是int,所以输出ascii
char输出字符

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7545133
  • 除此之外, 这篇博客: 问题 A: 阿Q的记忆中的 问题 A: 阿Q的记忆 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 时间限制: 1 Sec 内存限制: 128 MB

    题目描述
    阿Q登山回来,觉得山都长得一个样子。她记得某一段:她往下走了1米,再往下走了1米,然后往上走了1米,然后balabalabala……用一个包含U和D的字符串表示。U表示向上1米,D表示向下1米。她还记得全程起点的高度,终点的高度,以及她一共走了多少时间(一个单位时间内,她会使自己海拔升高或降低1米)。她知道山的任意位置的海拔都是非负的。她想知道,自己的记忆有没有自相矛盾。
    输入
    多组测试数据,对于每组测试数据:第一行,三个整数n,S,T,表示走的次数,起点、终点海拔;第二行,由U和D构成字符串,表示中间某一段的情况;
    输出
    对于每组测试数据,如果自相矛盾,输出NO,否则输出YES。
    样例输入 Copy
    4 0 4
    UU
    4 0 4
    D
    样例输出 Copy
    YES
    NO
    提示
    对于100%的数据n,S,T<=100000 字符串长度<=50
    题意: 可以走nnn步,起点是sss ,终点ttt,给出你走的中间一段走的方式位置大于等于零 问你是否能满足条件
    思路: 你先按这他给的走,如果位置小于零时,你走多走一步让你先上来,之后再走,判断步数与总步数大小,

    1. 不够肯定就不能满足条件
    2. 正好够用,就判断当前能到的位置是不是终点位置,能到可以,不能到则不满足条件
    3. 步数小于总步数,算出你走完这些步数还剩多少步可以走(还可以走的),再算出从你最后到的与终点的距离(应该走的)。然后还可以走的如果小于应该走的肯定就不行,大于则需要多出的是否是偶数,就是消耗这些多的步数。
    #pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
    #pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
    #include <immintrin.h>
    #pragma GCC optimize(2)
    #include <map>
    #include <queue>
    #include <string>
    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include <algorithm>
    #include <math.h>
    typedef long long ll;
    typedef unsigned long long ull;
    using namespace std;
    typedef pair<ll,ll> pii;
    #define mem(a,x) memset(a,x,sizeof(a))
    #define debug(x) cout << #x << ": " << x << endl;
    #define rep(i,n) for(int i=0;i<(n);++i)
    #define repi(i,a,b) for(int i=int(a);i<=(b);++i)
    #define repr(i,b,a) for(int i=int(b);i>=(a);--i)
    const int maxn=1e5+1010;
    #define inf 0x3f3f3f3f
    #define sf scanf
    #define pf printf
    const int mod=1e9+7;
    const int MOD=10007;
     
    inline int read() {
        int x=0;
        bool t=false;
        char ch=getchar();
        while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
        if(ch=='-')t=true,ch=getchar();
        while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
        return t?-x:x;
    }
    ll n,m,p;
    string str;
    int main() {
        while(~scanf("%lld%lld%lld",&n,&m,&p)) {
            cin>>str;
            ll len=str.size();
            ll sum=len;
            for(int i=0;i<len;i++){
                if(str[i]=='U') m++;
                else m--;
                if(m<0) m++,sum++;///多用一次
            }
            if(sum>n){
                cout<<"NO"<<endl;
            }else if(sum==n){
                if(m==p) cout<<"YES"<<endl;
                else cout<<"NO"<<endl;
            }else {
                ll ans1=n-sum;///还有
                ll ans2=abs(p-m);///需要
                ll ans=ans1-ans2;
                if(ans<0) cout<<"NO"<<endl;
                else {
                    if(ans%2) cout<<"NO"<<endl;
                    else cout<<"YES"<<endl;
                }
            }
        }
        return 0;
    }
    
  • 您还可以看一下 孙培超老师的阿里云服务器搭建多站点运行平台课程中的 如何在阿里云服务器上重装系统小节, 巩固相关知识点

变量有类型
表达式的计算结果也有类型
常量也有类型