j27eGU @ 2024-08-29 20:45:15
C++ 超过‘z'就爆了 求教
#include<bits/stdc++.h>
using namespace std;
int n,len;
char str1[51];
int main()
{
cin>>n>>str1;
len=strlen(str1);
for(int i=0;i<=len-1;i++)
{
char c=str1[i]+n;
if(c>'z')c-=26;
cout<<c;
}
}
by codingwen @ 2024-08-29 20:59:36
char的储存范围是0-127,而z是122,如果加上n后在127以上就会溢出。
hack:
26
z
by codingwen @ 2024-08-29 21:00:39
建议将c的存储类型改为int,然后将输出改为cout<<char(c)
。
by computor @ 2024-09-02 22:39:37
@codingwen 其实改成unsigned char也行