gpt4 book ai didi

c - 同时实例化函数和变量初始化

转载 作者:行者123 更新时间:2023-11-30 14:29:42 25 4
gpt4 key购买 nike

为什么下面的代码没有被编译?为了简洁起见,我希望以这种方式编写代码,这在语法上似乎没问题,但 Linux gcc 编译器会提示

#include <stdio.h>
void fn(int in, char ch, char* str);
int main()
{
fn(int i2 = 20, char ch2 = 'Z', char* str2 = "Hello");
printf("in2 = %d, ch2 = %c, str2 = %s\n", in2, ch2, str2);
return;
}

void fn(int in, char ch, char* str)
{
printf("int = %d\n", in);
printf("ch = %c\n", ch);
printf("str = %s\n", str);
return;
}

最佳答案

因为在 c89 (ANSI C) 中,您只能在 block 的开头声明变量。

int main()
{
int i2 = 20; char ch2 = 'Z'; char* str2 = "Hello";
fn(i2, ch2,str2);
printf("in2 = %d, ch2 = %c, str2 = %s\n", in2, ch2, str2);
return;
}

编辑

在 c99 中,即使您可以在其他部分中使用,您也无法在表达式内部声明变量(如函数调用)。

关于c - 同时实例化函数和变量初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4280055/

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