gpt4 book ai didi

c - if 语句中的声明

转载 作者:行者123 更新时间:2023-12-04 02:28:08 25 4
gpt4 key购买 nike

如果没有大括号,if 语句中的声明是否非法?例如:

if (argc == 2)
char* str = "Two";
else
char* str = "Not two";

需要转换为:

if (argc == 2) {
char* str = "Two";
} else {
char* str = "Not two";
}

出于好奇,为什么会这样?我理解需要使用多个语句的大括号,例如:

if (something)
printf(something);
printf(something);

上面真正“意味着”以下代替显式括号的地方:

if (something) {
printf(something);
}
printf(something);

但是,如果只包含单个 ;,为什么允许单个语句/声明?

最佳答案

if 语句(带有 else 子句)的语法是:

if (expression) statement else statement

还有这个:

char* str = "Two";

不是声明而是声明,因此它在您的第一个代码片段中无效。

第二个带大括号的代码片段之所以有效,是因为大括号表示一个复合语句,而复合语句中可能同时包含语句和声明。

但是请注意,即使在编译的第二种情况下,一旦 if 语句完成并且无法引用,每个子 block 中定义的变量 str 就会超出范围.您可能想要的是:

char *str;
if (argc == 2) {
str = "Two";
} else {
str = "Not two";
}

或等效地:

char *str;
if (argc == 2)
str = "Two";
else
str = "Not two";

关于c - if 语句中的声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65928215/

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