-
- Допустим t -- volatile или регистр. Компилятор вначале в b кладёт 0, потом в а из b, потом в t из a, (тут t меняется или у него read-only разряды...) потом в z из t. Потом глюки fk0(21 знак., 12.04.2012 15:05)
- А тех, кто не пользуется критическими секциями (SRWLock, Enter/LeaveCriticalSection, SpinLock etc) нужно сжигать на костре. - Apoheliy(12.04.2012 20:37, )
- Код в студию! - Bill(12.04.2012 16:05)
- А если еще с разрядностью переменных поиграть? Например переменная t имеет тип char, а x - int и присваиваем не 0, а 0x4000? Что попадет в x? - vmp(12.04.2012 15:37)
- Язык Си + говнокодеры + инквизиция == увлекательное шоу. - SciFi(12.04.2012 15:40 - 15:44)
- Умники могут сделать egrep '=[A-Z_a-z0-9]+=' *.c в своих исходниках и найти много удивительного. - fk0(12.04.2012 16:03)
- Язык Си + говнокодеры + инквизиция == увлекательное шоу. - SciFi(12.04.2012 15:40 - 15:44)
- ну дык дай абизяне гранату. кароче спич ниачём - Vit(12.04.2012 15:35)
- Что за компилятор? Логично было бы, что он должен обнулять все эти переменные независимо, а не делать многочисленные присваивания. - FDA(12.04.2012 15:19)
- Нифига не логично: стандарт не велит. - SciFi(12.04.2012 15:26)
- И где в стандарте такое написано? Там есть про порядок выполнения множественных присваиваний, но про обнуление переменных и про оптимизацию, которая при этом возможна, там вроде ничего не говориться. - FDA(12.04.2012 16:04)
- Это составное выражение. Аргументом следующего является результат предыдущего оператора "=". Компилятор может соптимизировать, но результат должен остаться как и в случае выполнения каждого присваивания "цепочкой". - Cepгeй Бopщ(12.04.2012 16:11)
- надо проверить в железе или симуляторе с регистром, где есть read-only биты... - FDA(12.04.2012 16:14)
- Не надо. Можно просто взглянуть на дизассемблер кода с volatile переменными. Хотя, после чтения стандарта, я бы пока отнёс эту ситуацию в категорию implementation-defined: SciFi(434 знак., 12.04.2012 16:53)
- Лучше не домысливать, ниженаписанное предупреждает о побочных эффектах. Если компиляторописатели трактуют это как право нарушить последовательность, они неправы. - Vladimir Ljaschko(12.04.2012 17:08)
- Да, фигню говорю. SciFi(1280 знак., 12.04.2012 17:41)
- Какие качественные грабли. Вспоминается "0 * * * * sh -c 'kill -11 $RANDOM'". - fk0(12.04.2012 18:09)
- Да, фигню говорю. SciFi(1280 знак., 12.04.2012 17:41)
- Лучше не домысливать, ниженаписанное предупреждает о побочных эффектах. Если компиляторописатели трактуют это как право нарушить последовательность, они неправы. - Vladimir Ljaschko(12.04.2012 17:08)
- Не надо. Можно просто взглянуть на дизассемблер кода с volatile переменными. Хотя, после чтения стандарта, я бы пока отнёс эту ситуацию в категорию implementation-defined: SciFi(434 знак., 12.04.2012 16:53)
- надо проверить в железе или симуляторе с регистром, где есть read-only биты... - FDA(12.04.2012 16:14)
- Это составное выражение. Аргументом следующего является результат предыдущего оператора "=". Компилятор может соптимизировать, но результат должен остаться как и в случае выполнения каждого присваивания "цепочкой". - Cepгeй Бopщ(12.04.2012 16:11)
- И где в стандарте такое написано? Там есть про порядок выполнения множественных присваиваний, но про обнуление переменных и про оптимизацию, которая при этом возможна, там вроде ничего не говориться. - FDA(12.04.2012 16:04)
- Нифига не логично: стандарт не велит. - SciFi(12.04.2012 15:26)
- Допустим t -- volatile или регистр. Компилятор вначале в b кладёт 0, потом в а из b, потом в t из a, (тут t меняется или у него read-only разряды...) потом в z из t. Потом глюки fk0(21 знак., 12.04.2012 15:05)