Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

подскажите

153  
YoMaYo прохожий09.11.07 23:45
NEW 09.11.07 23:45 
если я пишу а=1; а=2; а=3; что делает компайлер...даёт он а только значение 3 или принимает а при пробежки программы все ети три значения и остаётся на 3?
исвените за такой вопрос, но я не специалист в программирование...
#1 
GANDJUBAS Ганджубас10.11.07 01:05
GANDJUBAS
NEW 10.11.07 01:05 
в ответ YoMaYo 09.11.07 23:45
Зависит от компайлера. Разные бывают. В простом будет по-очереди присваивать все 3 значения. Хороший компайлер просто выбросит первые.
#2 
  digital.pilot коренной житель10.11.07 01:46
digital.pilot
NEW 10.11.07 01:46 
в ответ YoMaYo 09.11.07 23:45
компайлер выбросит ошибку. Потому что надо писать a:=1; Ведь это Турбо Паскаль, правда?
#3 
kashej постоялец10.11.07 09:54
kashej
NEW 10.11.07 09:54 
в ответ GANDJUBAS 10.11.07 01:05
GANDJUBAS, да ты спец оказывается ;)
http://denis-aristov.ucoz.com
#4 
Simple Nothing is f*cked10.11.07 11:56
Simple
NEW 10.11.07 11:56 
в ответ digital.pilot 10.11.07 01:46
Модула-2. Щас прибежит нас спец по с++ и начнет втирать, что надо написать класс :-D
#5 
Murr коренной житель10.11.07 14:32
Murr
NEW 10.11.07 14:32 
в ответ digital.pilot 10.11.07 01:46
Не-а... Это ассемблер, а потому:
MOV AX, 1
MOV AX, 2
MOV AX, 3
Или Я уже что-то путаю...
#6 
Murr коренной житель10.11.07 14:44
Murr
10.11.07 14:44 
в ответ GANDJUBAS 10.11.07 01:05
Хороший компайлер просто выбросит первые.
------
"Хорший" компайлер будет смотреть определение этого 'а', на предмет volatile, в частности.
При его наличии - будут выполняться все три присваивания.
При отсутствии volatile и если оптимизация разрешена, то, в зависимости от разрешенного уровня оптимизации,
может оставить код для всех трех присваиваний или удалить часть из них, включая удаление всех трех.
Может так же поменять определение переменной, добавив - register - и разместить ее в регистре процессора вместо памяти...
Вроде все - вынесение за пределы цикла тут не применяется...
#7 
YoMaYo прохожий12.11.07 12:55
NEW 12.11.07 12:55 
в ответ Murr 10.11.07 14:44
а как написать тогда, чтоб быт уверенным, что а будет инитиализированна три раза?
#8 
AlexNek старожил12.11.07 20:12
AlexNek
NEW 12.11.07 20:12 
в ответ YoMaYo 12.11.07 12:55
В цикле не пробовали?
#9 
  scorpi_ сам ты прохожий!13.11.07 03:43
NEW 13.11.07 03:43 
в ответ YoMaYo 12.11.07 12:55
Ты бы написал на каком языке пишешь, телепатов здесь нет. Но если это С/С++, то можно использовать volatile - http://en.wikipedia.org/wiki/Volatile_variable
#10 
Murr коренной житель13.11.07 19:39
Murr
NEW 13.11.07 19:39 
в ответ YoMaYo 12.11.07 12:55, Последний раз изменено 13.11.07 19:42 (Murr)
а как написать тогда, чтоб быт уверенным, что а будет инитиализированна три раза?
------
scorpi_ уже написал.
Он правда не спросил - А зачем надо присваивать три раза? Почему нужны именно эти значения? С точки зрения кода смысла в них нет.
Если проще - напиши на чем пишешь и какую задачу решаешь. Тогда можно будет что-то советовать...
#11