【发布时间】:2021-10-06 15:36:17
【问题描述】:
char s[100];
cin>>s;
int x=strlen(s);
if((x-2)>=9)
cout<<s[0]<<x-2<<s[x-1]<<endl;
else
cout<<s<<endl;
输入 'a' 的输出是 'a' BUT
char s[100];
cin>>s;
if((strlen(s)-2)>=9)
cout<<s[0]<<strlen(s)-2<<s[strlen(s)-1]<<endl;
else
cout<<s<<endl;
对于相同的输入“a”,该程序的输出是 a18446744073709551615a。
只需将 strlen(s) 值分配给整数即可避免问题发生。为什么??
18446744073709551615a 的垃圾值是从哪里来的,如果在第二种情况下正在编译“if”条件,那么为什么?
【问题讨论】:
标签: c++ arrays string character strlen