Re: Re2: ERROR in BC45!!!

From
sunroy@co.su (2:50/128.0)
To
All ()
Date
1996-06-22T18:15Z
Area
SU.WINDOWS.PROG
X-RealName: Vitaly Filatov

Артём!

Устранить ошибку, изменением ключей транслятора можно,
потому, что неправильно работает синтаксический
анализатор.

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

А в программе ничего неправильного нет и она должна
работать всегда. А вот работает она не всегда.
Я могу слегка изменить синтаксический граф этой
программы и она сразу начинает работать правильно
(цикл for выполняется 1 раз):
 
#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[])
{
int num,ch,i;
char *p,string[]="123";
	printf("num=%d\n",atoi(string));
	p=string;
	ch=*p++;
	num=ch-'0';
for(i=0;i<1;i++) { /*добавлено*/
	while((ch=*p++)!=NULL) {
		num=num*10+ch-'0';
	}
}                  /*добавлено*/
	printf("num=%d\n",num);
	return(0);
}

и работает иначе нет.

Граждане! А знаете ли Вы, что система подсчёта голосов
на выборах сделана на PC? А вдруг программы написаны
на ВС 4.5?


---
 * Origin: Roy International Consultancy Inc. (2:50/128.0@fidonet)