在c中添加两个数字

时间:2015-10-09 12:07:44

标签: c

是否有可能通过在C语言中使用单个变量(int a)来读取和添加两个或三个不同的整数?

我不想使用数组

3 个答案:

答案 0 :(得分:3)

我不确定我能不能找到你,但是,例如,如果你想添加2个16位整数和一个32位整数,你可以做到

#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

int main()
{
    uint32_t a;

    printf("Enter number 1: ");
    scanf("%hd", (uint16_t *)(&a));

    printf("Enter number 2: ");
    scanf("%hd", ((uint16_t *)(&a))+1);

    printf("%X\n", a);

    printf("Sum = %"PRIu32"\n", (uint32_t)(*(uint16_t *)(&a)) + *(((uint16_t *)(&a)) + 1));

    return 0;
}

逻辑是考虑变量等于字节数组,这就是它。

此实现仍然存在问题HERE

答案 1 :(得分:0)

没有。每次将新值赋予同一变量时,它都会替换旧值。如果你不想使用数组并且它是一个简单的代码来添加数字,只需声明三个变量并将每个值赋值给其中一个。

答案 2 :(得分:0)

我不知道你是否愿意这样做,但你能做到的另一种方法就是接受像计算器一样的输入,并在对它们应用操作之前解析为int。

像这样的东西

#include <stdio.h>
#include <string.h>

int main ()
{
    char buffer[256];
    char * pch;

    printf("input your numbers in this format ${number1}+${number2}...: ");
    fgets (buffer, 256, stdin);

    int sum = 0;
    pch = strtok (buffer, "+");
    while (pch != NULL)
    {
        sum += atoi (pch);
        pch = strtok (NULL, "+");
    }
    printf("the sum is %\n", sum);
    return 0;
}

所以,运行它并输入2 + 2 + 2,它会为你做计算。感谢