我很抱歉,如果以前曾经问过这个,但我是C的初学者,我想知道是否有人可以帮助解释()下面代码中括号的使用,我从在线教程中获取它并运行正常,但其中有一部分我不明白.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int age;
printf("Please enter the age");
scanf("%d", &age);
if (age > 18 /*condition */ ) {
printf("You may enter the club");
if (age < 21)
{
printf("The age is greater than 18 but less than 21");
Run Code Online (Sandbox Code Playgroud)
} 其他
(printf("The age is greater than 18 and greater than 21"));
} else if (age == 18)
{
printf("The age is equal to 18");
}
else {
printf("The age is not greater than 18");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
根据我收集的内容,圆括号用于包含if语句的条件,大括号用于表示遵循该条件的操作.除了以粗体显示的嵌套else条件外,else语句后跟一个包含print命令的圆括号.
任何人都可以解释为什么会这样吗?
圆括号()(以及大括号{})可能出现在几个不同的上下文中,服务于不同的角色.
if当您需要将多个语句组合成一个复合语句以作为其真或假分支时,通常需要使用大括号if.例如,在您的情况下,每个分支if (age < 21)只是一个语句,这意味着其分支中的大括号不是必需的.你可以把它if写成
if (age < 21)
printf("The age is greater than 18 but less than 21");
else
printf("The age is greater than 18 and greater than 21");
Run Code Online (Sandbox Code Playgroud)
同时真正的分支if (age > 18)包含多个语句,这就是为什么你需要大括号的原因.
同时,围绕着圆括弧if条件是只是一个语法元素if语句-语法要求各地对圆括弧的if条件,就像它需要圆括号for,while,函数调用和其他语法结构.
但是圆括号也可以用于完全不同的角色:在表达式中,其主要目的是将操作符与其操作数分组,如(2 + 2) * (5 - 3).但是,在表达式中,您可以自由使用冗余括号,例如,您可以编写(((2))) + (3)而不是2 + 3.或者你可以在整个表达式周围添加多余的括号,例如(((2 + 3)))代替(2 + 3)等等.
这正是您在示例中观察到的内容.您的
printf("The age is greater than 18 and greater than 21");
Run Code Online (Sandbox Code Playgroud)
只是一个表达式语句,即一个由单个表达式组成的语句.那个表达是一个呼唤printf.如果您愿意,可以将该呼叫附加到任意数量的冗余圆括号中
(((printf("The age is greater than 18 and greater than 21"))));
Run Code Online (Sandbox Code Playgroud)
没有改变它的含义.
这两个因素的结合:事实上你并不真正需要{}它printf,以及你可以根据需要放置尽可能多的事实,()这printf会产生一种幻觉,以至于在某种情况下,printf一对{}被某种方式取代了对().实际上,这是两个完全不相关的行为.
无论如何,它只是一种语法上的好奇,而不是具有任何实际价值的东西.如何在教程的代码中发生 - 任何人的猜测.