Каковы существенные различия между ANSI C и K&R C?

public class MostFrequentNumber {

    public MostFrequentNumber() {

    }

    int frequentNumber(List<Integer> list){

        int popular = 0;
        int holder = 0;

        for(Integer number: list) {
            int freq = Collections.frequency(list,number);

            if(holder < freq){
                holder = freq;
                popular = number;
            }
        }

       return popular;

    }

    public static void main(String[] args){

        int[] numbers = {4,6,2,5,4,7,6,4,7,7,7};

        List<Integer> list = new ArrayList<Integer>();

        for(Integer num : numbers){
            list.add(num);
        }


        MostFrequentNumber mostFrequentNumber = new MostFrequentNumber();

        System.out.println(mostFrequentNumber.frequentNumber(list));


    }
}
43
задан James McNellis 19 June 2010 в 22:13
поделиться

6 ответов

Может быть некоторый беспорядок здесь о какой "K& R C". Термин относится к языку, как зарегистрировано в первый выпуск "Языка программирования C". Примерно разговор: входной язык компилятора C Bell Labs приблизительно 1978.

Kernighan и Ritchie были вовлечены в процесс стандартизации ANSI. "ANSI C" диалект замененный "K& R C" и последующие выпуски "Языка программирования C" принимают соглашения ANSI. "K& R C" "мертвый язык", кроме того, до такой степени, что некоторые компиляторы все еще принимают унаследованный код.

29
ответ дан Chris Conway 26 November 2019 в 22:56
поделиться

Прототипы функции были самым очевидным изменением между K& R C и C89, но было много других. Большая важная работа вошла в стандартизацию библиотеки C, также. Даже при том, что стандартная библиотека для C была кодированием существующей практики, она шифровала [приблизительно 111] существующие методы, которые сделали ее более трудной. P.J. Книга Plauger, Стандартная библиотека для C , является большой ссылкой, и также говорит некоторые закулисные детали , почему библиотека закончила способ, которым это сделало.

ANSI/стандарт ISO C очень похож на K& R C большинством способов. Это было предназначено, что большая часть существующего кода C должна основываться на компиляторах ANSI без многих изменений. Кардинально, тем не менее, в предстандартную эру, семантика языка была открыта для интерпретации каждым поставщиком компилятора. ANSI C ввел общее описание языковой семантики, которая помещает все компиляторы на равные условия. Легко считать это само собой разумеющимся теперь, приблизительно 20 лет спустя, но это было значительным успехом.

По большей части, если у Вас нет предварительного стандарта C кодовой базой для поддержания, Вы будете рады Вы, не должны волноваться об этом. Если Вы делаете - или хуже уже, при попытке принести старой программе до более современных стандартов - тогда у Вас есть мое сочувствие.

16
ответ дан tuxedo 26 November 2019 в 22:56
поделиться

Существуют некоторые незначительные различия, но я думаю более поздние выпуски K& R для ANSI C, таким образом, нет никакой реальной разницы больше.
"C Классик" из-за отсутствия лучшие условия имели немного отличающийся способ определить функции, т.е.

int f( p, q, r )  
int p, float q, double r;  
{  
    // Code goes here  
}

я полагаю, что другим различием были прототипы функции. Прототипы не имели к - на самом деле они не могли - брать список аргументов или типов. В ANSI C они делают.

12
ответ дан FreeMemory 26 November 2019 в 22:56
поделиться

Другое различие - то, что функциональные типы возврата и типы параметра не должны были быть определены. Они, как предполагалось бы, были бы ints.

f(x)
{
    return x + 1;
}

и

int f(x)
int x;
{
    return x + 1;
}

идентичны.

3
ответ дан Ferruccio 26 November 2019 в 22:56
поделиться

Различие:

  1. Прототип
  2. поддержка широкого символа и интернационализация
  3. Поддержка константы и энергозависимых ключевых слов
  4. указатели функции разрешения, которые будут использоваться в качестве разыменования
2
ответ дан LPL 26 November 2019 в 22:56
поделиться

Самым большим единственным различием, я думаю, является определение прототипа функции и синтаксис для описания типов аргументов функции.

1
ответ дан DrPizza 26 November 2019 в 22:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: