我试图用C编写一个程序,以将整数和字符的值求和。如果用户在字符应输入的位置输入一个整数,则希望程序计算两个整数的值。我的下面代码在用户输入2个整数的情况下有效,但最多只能计算9(例如:4 5:“字符'4'代表数字。'4'和'5'的总和为9”)。如果用户输入5 6,则结果为:“字符'5'代表数字。'5'和'6'的总和为;”。我已经搜索了一段时间,任何潜在的解决方案总是导致错误的总和。我还希望程序接受高于'9'的用户输入(例如:20 50),但是如果将'9'更改为'99',则会收到以下警告:“警告:多字符常量[-Wmultichar ]”。有人可以为我指出实现这些目标的正确方向吗?
SELECT process.id, name, item, file, sort, userprocess.id,
userprocess.id IS NOT NULL AS userprocess_exists
FROM `process`
LEFT OUTER JOIN userprocess ON userprocess.processid = process.id
AND userprocess.userid = 11
答案 0 :(得分:2)
int cs = sum(c, ch - 0);
您似乎想通过从用户输入的任何字符中减去ASCII值0来解释ASCII值。但是,当您要使用字符文字“ 0”时,您使用的整数文字为0。见下文:
int cs = sum(c, ch - '0');
此外,我建议将您的int重命名为i或c以外的其他名称。区分c和ch的类型有点困难。
也可以考虑更改
if((c >= '0' && c <= '9')
到
if((c >= 0 && c <= 9)
c是整数,您应该这样比较。通过使用“”,您基本上是将其强制转换为char变量,而此处不需要。 另一个问题是,我认为您无法使用两位数的char变量来完成您要尝试执行的操作。一个char变量可以包含一个字符,因为一个两位数由两个字符组成。
答案 1 :(得分:1)
抱歉,我无法发表评论,因此我仅使用一位数字就此问题添加了答案。
您只有一个字符
char ch;
因此它只读取一个字符,您需要一个char ch[10]
这样的字符数组
然后您将使用int foo = atoi(ch)
将数组转换为整数