C:带括号的错误

C:带括号的错误,c,syntax,parentheses,C,Syntax,Parentheses,所以我写了一系列函数,然后我试着编译,我在讨论括号时遇到了错误。我查看了我的代码,没有找到任何不匹配的括号。有人能告诉我我做错了什么吗> int str_to_int(char* str) { int sum = 0; int x; for(x=strlen(str) ; x>=2 ; x--) { if(30 <= str[x] <= 39) { sum += raise16((str[x] - 30) x); }; if

所以我写了一系列函数,然后我试着编译,我在讨论括号时遇到了错误。我查看了我的代码,没有找到任何不匹配的括号。有人能告诉我我做错了什么吗>

int str_to_int(char* str)
{
  int sum = 0;
  int x;

  for(x=strlen(str) ; x>=2 ; x--) {

    if(30 <= str[x] <= 39) {
      sum += raise16((str[x] - 30) x);
    };

    if(41 <= str[x] <= 46) {
      sum += raise16((str[x] - 41) x);
    };

    if(61 <= str[x] <= 66) {
      sum += raise16((str[x] - 61) x);
     };
  }

  return sum;
}
int-str到int(char*str)
{
整数和=0;
int x;
对于(x=strlen(str);x>=2;x--){
如果(30这是错误的

raise16((str[x] - 30) x)
也许你是说

raise16((str[x] - 30) * x)
和其他等价表达式

而且,这种比较也不会像你期望的那样有效

if(30 <= str[x] <= 39)

如果(30使用&&连接2个条件,以下是正确的代码:

int str_to_int(char* str)
{
    int sum = 0;
    int x;

    for (x = strlen(str)-1; x >= 0; x--) {
        if (30 >= str[x] && str[x] <= 39) {
            sum += raise16((str[x] - 30)*x);
        } else if (41 >= str[x] && str[x] <= 46) {
            sum += raise16((str[x] - 41)*x);
        } else if (61 >= str[x] && str[x] <= 66) {
            sum += raise16((str[x] - 61)*x);
        }
    }
    return sum;
}
int-str到int(char*str)
{
整数和=0;
int x;
对于(x=strlen(str)-1;x>=0;x--){
如果(30>=str[x]&&str[x]=str[x]&&str[x]=str[x]&&str[x]=str[x]&&str[x]=str[x])
(str[x]=0
,因为字符串索引从0开始
  • 我已经删除了;在if条件结束时,因为它们不是 必要的
  • 将if条件更改为else if条件 独家的

  • 我认为这个
    30不要只告诉我们你有“关于括号的错误”。在你的问题中包括实际的错误信息。出于好奇,数字
    30
    39
    41
    46
    61
    、和
    66
    ?我想你是在试图识别
    '0'
    '9'
    'A'
    'F'
    'A'
    ..
    'f
    '--但这些是这些字符的十六进制ASCII值。不要使用;使用字符常量本身。类似于
    10的表达式可能您想进一步解释一下为什么要使用
    &&
    运算符,并注意他错过了函数调用中的运算符以及表达式末尾的分号如果语句
    (30>=str[x]&&str[x]=
    应该是
    通知用户,请使用“@KeithThomson”,否则他们可能看不到消息。keith说的是对的。
    如果(30>=str[x]&&str[x]我告诉过你使用“@username”通知用户。而你所说的是错的。它们是一样的。只有在
    str时,它们才是真的[x] 为什么你删除了所有的评论而没有修改代码?这会使我们的评论看起来也不完整!
    
    int str_to_int(char* str)
    {
        int sum = 0;
        int x;
    
        for (x = strlen(str)-1; x >= 0; x--) {
            if (30 >= str[x] && str[x] <= 39) {
                sum += raise16((str[x] - 30)*x);
            } else if (41 >= str[x] && str[x] <= 46) {
                sum += raise16((str[x] - 41)*x);
            } else if (61 >= str[x] && str[x] <= 66) {
                sum += raise16((str[x] - 61)*x);
            }
        }
        return sum;
    }