gpt4 book ai didi

c - 为什么我需要花括号?

转载 作者:太空狗 更新时间:2023-10-29 16:41:25 25 4
gpt4 key购买 nike

考虑这个简单的程序:

fails.c:

#include <stdio.h>                                            

int main(){
int i = 10;
if (i == 10)
int j = 11;
return 0;
}

编译失败(gcc fails.c),给出这个错误:

fails.c: In function ‘main’:
fails.c:7:3: error: expected expression before ‘int’
int j = 11;
^

但是这个很好:

#include <stdio.h>

int main(){
int i = 10;
if (i == 10){
int j = 11;
}
return 0;
}

我认为解决方法是将那些 {} 放入。但我想知道为什么需要这样做。

当像 printf 这样的东西可以接受时,为什么它会这样?

#include <stdio.h>

int main(){
int i = 10;
if (i == 10)
printf("some text\n");
return 0;
}

最佳答案

这是因为if后面必须跟一个语句:

C99/6.8.4

if ( expression ) statement

但是,一个 declaration 不是声明:

C99/6.8

statement:

labeled-statement

compound-statement

expression-statement

selection-statement

iteration-statement

jump-statement

当放在 {} 中时,它是一个复合语句,因此可以。

关于c - 为什么我需要花括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49414038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com