为什么x是负数,原因好像是c是负数,目的是取c的ascii码来加,怎么解决
int x=0;
char c;
...
x=x+c
...

解决方案 »

  1.   

    int x=0;
    char c = 'c';
    ...
    x=x+c--------------
    你的c是字符串变量,还没给它初始化成'c'吧??
      

  2.   

    c是从字符串数组中取的一个
    int x=0;
    ...
    char c = s[0];
    ...
    x=x+c
      

  3.   

    莫非是加太多溢出了,否则加c不可能是负,如果你数组s中的字符值没问题都是正的话。int x=0;
    //...
    char c = s[0];
    //...
    x += c;
      

  4.   

    如果是1-127内标准ASCII则没问题,如果>127则为负(最高位为符号位),除非指定unsigned
      

  5.   

    原因是c没有初始化,如果c默认初始化值(依赖编译平台)大于128那么X为负值,如果没有初始化,按以下处理也不会为负值
    int x=0;
    unsigned char c;
    ...
    x=x+c;或者
    int x=0;
    char c;
    ...
    x=x+(unsigned char)c;
      

  6.   

    大哥,中文的当然会出问题,中文的char>127了,在加的时候,最高位是1,被认为是负数,char+int时,char被转化为int,并且是负的int!
      

  7.   

    char也是有符号的.当大于0x80不就是负数了?
      

  8.   

    这是正常的.unsigned char 转换才不会是负数
      

  9.   

    初始化问题 + unsigned char
      

  10.   

    int x=0;
    char c;
    ...          //这之间有内存溢出问题,否则肯定不会溢出的
    x=x+c
    ...