2015-10-09 9 views
-4

Есть ли возможность читать и добавлять два или три разных целых числа, используя одну переменную (int a) на языке C?Добавление двух чисел в c

Я не хочу использовать массиву

+1

Это шутка? ... – LPs

+1

Просто используйте две переменные, человек – ForceBru

+0

Нет, о чем я могу думать. –

ответ

0

No. Каждый раз, когда вы вы atribute новое значение той же переменной заменяет старую. Если вы не хотите использовать массив, и это простой код для добавления чисел, просто объявите три переменные и присвойте каждое значение одному из них.

+0

На самом деле достаточно двух переменных. – Olaf

+0

Он сказал два или три, поэтому ... –

+0

«... добавьте два или три разных целого числа (** значения **), используя одну ** переменную **» (смелое дополнение мое) – Olaf

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

Нарушение строжайшего правила псевдонимов и зависит по энтиансе. – Olaf

+0

@ Олаф ... но он работает. – LPs

+0

@ Olaf Отредактировано и разделено. Мститель меняет DV – LPs

0

Я не знаю, если вы хотите, но еще один способ сделать это будет принимать входные сигналы, как вы удар в калькуляторах, и разобрать в целое прежде чем применять к ним операции.

Что-то вроде этого

#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, и это делает для Вас расчет. спасибо

+0

Слишком много переменных в вашем коде! – Olaf

+1

@ Олаф, это не проблема ... проблема заключалась в том, как суммировать наборы входов числа, используя одну переменную int вместо использования массива. –

+0

Вопрос как данный состояние отличается. Если у вас есть больше информации, чем указано здесь, вы должны включить в свой ответ. – Olaf

Смежные вопросы