读书人

C语言的括号的不解

发布时间: 2013-01-22 10:23:54 作者: rapoo

C语言的括号的困惑
我今天看到一个非常特别的用法,让我打赌打输了,十分郁闷啊。
我真的从来没见过还可以这样用,确实是我的功底太浅了,来拜托各位大神了。

#include <stdio.h>

int main()
{
{
printf("Hello world!\n");
}

return 0;
}

不理解
[解决办法]
这个没什么问题的。

有时候,为了区分函数中的功能点,可以这样使用:


int giFunc()
{
{
...//功能点1
}

{
...//功能点2
}

...
}

[解决办法]
每个{打开一个新的scope/block。

[解决办法]
所谓新的scope意味着,你可以又声明变量什么的了。
{
{
int a = 1;
}
{
int a = 1; // 和上面的a没关系
}
}

[解决办法]
这只是把这个语句当成一个程序块来对待啊
[解决办法]
可以把{}理解成变量作用域。

int main()
{
{
int i;
}
{
int i;
}
}

2个i并不矛盾,因为在不同的作用域中
[解决办法]
加一对括号表明是一个程序块,里面声明的局部变量的作用域只在本块有效.
[解决办法]
这种没什么 配对就是了 就像if(((...((a))...)))一样
[解决办法]
C语言语句分单条语句和语句块,并且语句块使代码很容易看,不容易产生歧义,也不容易让人误会还 容易维护,比如目前你语句块中只有一条语句,但是以后若是往这个语句块里面加东西的话,不会因为漏掉括号而使得代码变异

[解决办法]
Grammar of C++ Statements
statement:

labeled-statement
expression-statement
compound-statement
selection-statement
iteration-statement
jump-statement
declaration-statement
asm-statement
try-except-statement
try-finally-statement

labeled-statement:

identifier : statement
case constant-expression : statement
default : statement

expression-statement:

expressionopt ;

compound-statement:

{ statement-listopt }

statement-list:

statement
statement-list statement

selection-statement:

if ( expression ) statement
if ( expression ) statement else statement
switch ( expression ) statement

iteration-statement:

while ( expression ) statement
do statement while ( expression ) ;
for ( for-init-statement expressionopt ; expressionopt ) statement

for-init-statement:

expression-statement
declaration-statement

jump-statement:

break ;
continue ;
return expressionopt ;


goto identifier ;

declaration-statement:

declaration

try-except-statement:

__try compound-statement
__except ( expression ) compound-statement

try-finally-statement:

__try compound-statement
__finally ( expression ) compound-statement

[解决办法]
编程习惯问题 有的认为凸显程序模块化 就特特地加上一对{}
[解决办法]
一方面好看(易于阅读),一方面是程序块

读书人网 >C语言

热点推荐