【发布时间】:2015-03-24 12:15:48
【问题描述】:
所以我正在编写一系列函数,然后我尝试编译,我在谈论括号时遇到错误。我查看了我的代码,但找不到任何不匹配的括号。谁能告诉我我做错了什么>
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;
}
【问题讨论】:
-
我认为这个
30 <= str[x] <= 39不会像你认为的那样做,if 语句末尾的分号也不是必需的 -
不要只告诉我们您有“关于括号的错误”。在您的问题中包含实际的错误消息。出于好奇,数字
30、39、41、46、61和66的意义是什么?我认为您正在尝试识别'0'..'9'、'A'..'F'和'a'..'f' - 但这些是 十六进制这些字符的 ASCII 值。不要使用magic numbers;使用字符常量本身。 -
像
10 <= x <= 20这样的表达式实际上是合法的,但它并不意味着你认为它的意思。这意味着(10 <= x) <= 20,如果条件为假,(10 <= x)产生0,如果条件为真,则产生1。然后将0或1值与20进行比较。
标签: c syntax parentheses