user-0 提问: 不得了了，赵4老柿的编码风格太神啦！

回复:
user: user-1
content: #include <stdio.h> char a[]={'c','h'}; char b[]="啊"; int main() {     int i,n;     char buf[9+1];//给"0xXX 0xXX"留的空间      sprintf(buf,"0x%02X 0x%02X",(unsigned char)a[0],(unsigned char)a[1]);     printf("[%s]\n",buf);//[0x63 0x68]      sprintf(buf,"0x%02X 0x%02X",(unsigned char)b[0],(unsigned char)b[1]);     printf("[%s]\n",buf);//[0xB0 0xA1]      sprintf(buf,"0x%02X 0x%02X",a[0],a[1]);     printf("[%s]\n",buf);//[0x63 0x68]      sprintf(buf,"0x%02X 0x%02X",b[0],b[1]);     printf("[%s]\n",buf);//运气好了输出[0xFFFFFFB0 0xFFFFFFA1]；运气不好buf越界，程序异常退出！      return 0; }  不放一挂鞭，不够热闹哈！

user: user-1
content: 我特别喜欢“快活的气氛”这个字眼。 疫情下，全球郁闷的氛围中，缺的不就是“快活的气氛”嘛！

user: user-2
content: 赵4老师在哪开直播的

user: user-0
content: 可不是咋滴，上面只是个比喻，真实的经过是这样的：那天我发现赵老湿写了一个小程序： char a [] = "cp"; printf ("0x%02X", (unsigned char) a [0]); 程序大致是上面这样。我跟赵老湿说，赵老湿啊赵老湿，你就显示'c'和'p'的字符编码，就不要强转成(unsigned char)了吧，脱kz放p，看着别扭。赵老湿不肯。楼内网友一连声地说赵老湿对，我是错的，“挺赵老湿！””站赵老湿“！赵老湿看大家都支持他，脸上泛起了红光，用食指在碗里醮了酒，在桌子上把程序改了一下： char a [] = "啊"; 然后对我说，看，在这种情况下，转成 unsigned char 不就有用了么！ 我刚准备跟赵老湿说，那你要是改成 L"啊"、u"啊"或者U"啊"，怎么办呢？楼内又是一阵骚动，“挺赵老湿”！”站赵老湿！“。赵老湿激动起来，口里喃喃地说什么“long long固长，short固短”之类的，店里又充满了快活的气氛。

user: user-3
content: 哈哈，这是和赵4老师顶上了

user: user-1
content: 就算你写一个 #include <iostream> #include <string> using namespace std; inline int compare(string str1,string str2) {//相等返回0，大于返回1，小于返回-1          if (str1.size()>str2.size()) return 1; //长度长的整数大于长度小的整数     else if (str1.size()<str2.size()) return -1;     else                              return str1.compare(str2); //若长度相等，则头到尾按位比较 } string SUB_INT(string str1,string str2); string ADD_INT(string str1,string str2) {//高精度加法     int sign=1; //sign 为符号位     string str;     if (str1[0]=='-') {         if (str2[0]=='-') {             sign=-1;             str=ADD_INT(str1.erase(0,1),str2.erase(0,1));         } else {             str=SUB_INT(str2,str1.erase(0,1));         }     } else {         if (str2[0]=='-') {             str=SUB_INT(str1,str2.erase(0,1));         } else { //把两个整数对齐，短整数前面加0补齐             string::size_type L1,L2;             int i;             L1=str1.size();             L2=str2.size();             if (L1<L2) {                 for (i=1;i<=L2-L1;i++) str1="0"+str1;             } else {                 for (i=1;i<=L1-L2;i++) str2="0"+str2;             }             int int1=0,int2=0; //int2 记录进位             for (i=str1.size()-1;i>=0;i--) {                 int1=(int(str1[i])-'0'+int(str2[i])-'0'+int2)%10;                 int2=(int(str1[i])-'0'+int(str2[i])-'0'+int2)/10;                 str=char(int1+'0')+str;             }             if (int2!=0) str=char(int2+'0')+str;         }     }     //运算后处理符号位     if ((sign==-1)&&(str[0]!='0')) str="-"+str;     return str; } string SUB_INT(string str1,string str2) {//高精度减法     int sign=1; //sign 为符号位     string str;     int i,j;     if (str2[0]=='-') {         str=ADD_INT(str1,str2.erase(0,1));     } else {         int res=compare(str1,str2);         if (res==0) return "0";         if (res<0) {             sign=-1;             string temp =str1;             str1=str2;             str2=temp;         }         string::size_type tempint;         tempint=str1.size()-str2.size();         for (i=str2.size()-1;i>=0;i--) {             if (str1[i+tempint]<str2[i]) {                 j=1;                 while (1) {//zhao4zhong1添加                     if (str1[i+tempint-j]=='0') {                         str1[i+tempint-j]='9';                         j++;                     } else {                         str1[i+tempint-j]=char(int(str1[i+tempint-j])-1);                         break;                     }                 }                 str=char(str1[i+tempint]-str2[i]+':')+str;             } else {                 str=char(str1[i+tempint]-str2[i]+'0')+str;             }         }         for (i=tempint-1;i>=0;i--) str=str1[i]+str;     }     //去除结果中多余的前导0     str.erase(0,str.find_first_not_of('0'));     if (str.empty()) str="0";     if ((sign==-1) && (str[0]!='0')) str ="-"+str;     return str; } string MUL_INT(string str1,string str2) {//高精度乘法     int sign=1; //sign 为符号位     string str;     if (str1[0]=='-') {         sign*=-1;         str1 =str1.erase(0,1);     }     if (str2[0]=='-') {         sign*=-1;         str2 =str2.erase(0,1);     }     int i,j;     string::size_type L1,L2;     L1=str1.size();     L2=str2.size();     for (i=L2-1;i>=0;i--) { //模拟手工乘法竖式         string tempstr;         int int1=0,int2=0,int3=int(str2[i])-'0';         if (int3!=0) {             for (j=1;j<=(int)(L2-1-i);j++) tempstr="0"+tempstr;             for (j=L1-1;j>=0;j--) {                 int1=(int3*(int(str1[j])-'0')+int2)%10;                 int2=(int3*(int(str1[j])-'0')+int2)/10;                 tempstr=char(int1+'0')+tempstr;             }             if (int2!=0) tempstr=char(int2+'0')+tempstr;         }         str=ADD_INT(str,tempstr);     }     //去除结果中的前导0     str.erase(0,str.find_first_not_of('0'));     if (str.empty()) str="0";     if ((sign==-1) && (str[0]!='0')) str="-"+str;     return str; } string DIVIDE_INT(string str1,string str2,int flag) {//高精度除法。flag==1时,返回商; flag==0时,返回余数     string quotient,residue; //定义商和余数     int sign1=1,sign2=1;     if (str2 == "0") {  //判断除数是否为0         quotient= "ERROR!";         residue = "ERROR!";         if (flag==1) return quotient;         else         return residue ;     }     if (str1=="0") { //判断被除数是否为0         quotient="0";         residue ="0";     }     if (str1[0]=='-') {         str1   = str1.erase(0,1);         sign1 *= -1;         sign2  = -1;     }     if (str2[0]=='-') {         str2   = str2.erase(0,1);         sign1 *= -1;     }     int res=compare(str1,str2);     if (res<0) {         quotient="0";         residue =str1;     } else if (res == 0) {         quotient="1";         residue ="0";     } else {         string::size_type L1,L2;         L1=str1.size();         L2=str2.size();         string tempstr;         tempstr.append(str1,0,L2-1);         for (int i=L2-1;i<L1;i++) { //模拟手工除法竖式             tempstr=tempstr+str1[i];             tempstr.erase(0,tempstr.find_first_not_of('0'));//zhao4zhong1添加             if (tempstr.empty()) tempstr="0";//zhao4zhong1添加             for (char ch='9';ch>='0';ch--) { //试商                 string str;                 str=str+ch;                 if (compare(MUL_INT(str2,str),tempstr)<=0) {                     quotient=quotient+ch;                     tempstr =SUB_INT(tempstr,MUL_INT(str2,str));                     break;                 }             }         }         residue=tempstr;     }     //去除结果中的前导0     quotient.erase(0,quotient.find_first_not_of('0'));     if (quotient.empty()) quotient="0";     if ((sign1==-1)&&(quotient[0]!='0')) quotient="-"+quotient;     if ((sign2==-1)&&(residue [0]!='0')) residue ="-"+residue ;     if (flag==1) return quotient;     else         return residue ; } string DIV_INT(string str1,string str2) {//高精度除法,返回商     return DIVIDE_INT(str1,str2,1); } string MOD_INT(string str1,string str2) {//高精度除法,返回余数     return DIVIDE_INT(str1,str2,0); } int main() {     char ch;     string s1,s2,res;      while (cin>>s1>>ch>>s2) {         switch (ch) {             case '+':res=ADD_INT(s1,s2);break;             case '-':res=SUB_INT(s1,s2);break;             case '*':res=MUL_INT(s1,s2);break;             case '/':res=DIV_INT(s1,s2);break;             case '%':res=MOD_INT(s1,s2);break;             default :                   break;         }         cout<<res<<endl;     }     return(0); }  他赵老湿也会说那 万一输入一个1亿亿亿亿亿亿亿亿位的数呢？ 万一输入罗马数字呢？ 万一输入中文大写数字呢？ 万一不是数呢？

user: user-4
content: 经一事，长一智! 习惯这东西，不好改

user: user-5

user: user-1
content: 引用 10 楼 均陵鼠侠 的回复:赵老湿能不能改一下程序，让数组a能同时应付和保存char，wchar_t，char16_t和char32_t类型的编码？这事要是做成了，也是大功一件。  [quote=引用 8 楼 赵4老师 的回复:]我特别喜欢“快活的气氛”这个字眼。 疫情下，全球郁闷的氛围中，缺的不就是“快活的气氛”嘛！ [/quote] 那你还是饶了我这把老骨头吧。  字符串那些事儿：BSTR-LPSTR-LPWSTR-CString-VARIANT-COleVariant-_variant_t-CComBSTR-_bstr_t.txt http://blog.csdn.net/pizi0475/archive/2010/03/04/5346708.aspx  人生路， 美梦似路长 路里风霜， 风霜扑面干

user: user-6
content: 楼主真正搞笑的只有告诉老赵(unsigned int)a[i]更正确这一句，其他所有的“插科打诨”都是为了掩盖这一句，把你的喜剧天赋发挥得淋漓尽致～～～

user: user-0
content: 赵老湿能不能改一下程序，让数组a能同时应付和保存char，wchar_t，char16_t和char32_t类型的编码？这事要是做成了，也是大功一件。  引用 8 楼 赵4老师 的回复:我特别喜欢“快活的气氛”这个字眼。 疫情下，全球郁闷的氛围中，缺的不就是“快活的气氛”嘛！

user: user-0
content: CSDN的人气越来越不济了，自己顶一顶。 我就说赵老湿，你就演示一个5加7等于12，何必弄一个long long signed，搞一个int还省力气，你也不嫌累。赵老湿哪肯啊，当时就改了一下程序，说你看， this_is_a_var_a = 12394572389446723543; 这不就有用了吗？赵老湿的神武一下子让大家佩服得不行不行的，楼里都说我不对，夸赵老湿你well done，干得漂亮，就应该这样！不声明成long long数字就容易被截断出现错误。看了大家的发言，越老湿一下子神气起来，酒店里充满了快活的空气。