длинная целочисленная задача - PullRequest
0 голосов
/ 21 марта 2010

Я новичок в C и использую компилятор Turbo C ++ (16 бит).

В программном обеспечении, которое я пишу, максимальный ответ составляет около 32000. Если я хочу, чтобы число превышало это, я использую long int.

Если я выполню следующую программу:

#include <stdio.h>
void main()
{
    long int x;
    x=40000;
    printf("%d", x);
}

Тогда я получаю ошибку, что постоянное значение является длинным в функции main().

Как я могу получить ответ более 32000 и избавиться от этой ошибки? также теперь я изменяю% d на% ld и использую 40000L bt, когда я использую целое число без знака, тогда также мне нужно использовать 'l' с 40000 // ??

Ответы [ 4 ]

6 голосов
/ 21 марта 2010

Используйте% ld в printf для длинного int.% d для int, который имеет только 16 бит в вашем компиляторе.А для сообщения об ошибке используйте x = 40000L.

0 голосов
/ 21 марта 2010

Возможно, справиться с переменным форматированием может помочь :) К тому времени, когда вы (или подсистема printf ()) действительно приступите к расширению переменных аргументов , предполагается, что вы знаете типа они есть.

Это касается не только printf, но и любой другой функции, которая использует va _ * () или v * printf () при обсуждении printf. Не забывайте о своих типах.

Кроме того, следите за подписью , чтобы избежать неожиданных результатов.

Другими словами, к тому моменту, когда вы вызываете printf () или что-либо еще, принимающее elipsis , будьте уверены в том, что вы проходите. Это не ограничивается printf (), фактически выходя за рамки этого, часто не будет выдавать предупреждения компилятора.

0 голосов
/ 21 марта 2010

Если вы работаете в Windows, лучшее решение для этого - использовать 32- или 64-разрядную платформу.16-битные программы даже не работают на 64-битных версиях окон;вам действительно нужно обновить.

У Microsoft есть бесплатная версия Visual Studio: Visual C ++ Express Edition .Это отличный вариант еще и потому, что он поставляется с полной IDE.

Gcc также доступен для окон в форме Mingw.К сожалению, сам mingw не выпускает готовые к использованию компиляторы, но делают другие, например уравнение.com или TDM .

0 голосов
/ 21 марта 2010

Измените long на unsigned, 40000 поместится в unsigned int.

...