Вопрос

Я новичок в 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, но когда я использую целое число без знака, тогда мне также нужно использовать 'l' с 40000//??

Это было полезно?

Решение

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

Другие советы

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

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

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

Gcc также доступен для Windows в виде Mingw.К сожалению, сама mingw не выпускает готовые компиляторы, но это делают другие, например уравнение.com или ТДМ.

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

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

Также следите за подписанность чтобы избежать неожиданных результатов.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top