2013-08-19 5 views
1

Я нашел в программе этого фрагмент кодаФункция фигурной скобки без ключевого слова неясного

{ 
     Aux_U16 = 16; 

    } 

поэтому вопрос: почему там это фигурные скобки. Ни одно ключевое слово, как if или switch, не отображается.

Так что функция имеет фигурные brakets на языке программирования C, если они написаны без ключевого слова

+0

Они указывают объем. Вот ссылка [http://msdn.microsoft.com/en-us/library/b7kfh662.aspx](http://msdn.microsoft.com/en-us/library/b7kfh662.aspx) – finlaybob

ответ

0

Обычно они будут использоваться для ограничения области видимости переменной, но в вашем примере Aux_U16 = 16; не определена новая переменная, поэтому должна существовать уже существующая переменная с именем Aux_16, а за ее пределами она будет продолжите, чтобы иметь любое значение, которое оно было последним установлено в пределах блока.

Ограничение области действия позволяет создать, например, новую переменную с именем i, не задумываясь о состоянии любого i вне этого блока - к сожалению, как и в примере, который вы дали, компилятор wouldn ' t обратите внимание на разницу между определением и назначением, и вы можете закончить развращение переменной, которую вы считали защищенной.

Другая распространенная причина, по которой найти вещи так просто, вырезать и вставить. Там нет ничего плохого в свободностоящих блоках, подобных этому, и иногда люди просто забывают удалить остатки. Или они могли иметь временные переменные там, пока они не отредактировали код, и они ушли. Или они могут означать это как примечание к себе, что код внутри блока принадлежит вместе.

0

{} Скобки определяют scope. Эти скобки должны быть внутри любой функции или метода. Если вы находитесь внутри функции, вы можете иметь блоки {}.

ПРИМЕЧАНИЕ. - Если вы просто добавите их и скомпилируете без какой-либо области, это даст вам ошибку времени компиляции.

2

Иногда бывает приятно, так как это дает вам новый масштаб, где вы можете более «чисто» объявить новые (автоматические) переменные.

Эти брекеты управляют областью переменных. И поскольку переменные с автоматическим хранением уничтожаются, когда они выходят за рамки.

Это просто изолировать блок кода, который достигает определенной (вспомогательной) цели. Редко, что один оператор достигает вычислительного эффекта, который я хочу; обычно это занимает несколько.

+0

true, отдельно что C не имеет деструкторов :) – CapelliC

+0

@CapelliC ... Да, это моя ошибка ... Но если я проверю любую программу с помощью утилиты 'objdump', я нашел один раздел с именем' DTOR' ... что это? – someone