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