gpt4 book ai didi

c - "Invalid initializer"错误

转载 作者:行者123 更新时间:2023-11-30 18:30:12 27 4
gpt4 key购买 nike

为什么不能编译?我得到:

[Error] invalid initializer

#include <stdio.h>
int main()
{
int i = 2;
char s[100] = (i == 2)? "botton":"bottle";
printf ("%c", s[0]);
return 0;
}

最佳答案

使用-Wall编译显示错误:

$ gcc -Wall test.c
test.c:5:10: error: array initializer must be an initializer list or string literal
char s[100] = (i == 2)? "botton":"bottle";
^
1 error generated.

但是,您可以使用 strcpy() 进行初始化:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
int i = 2;
char s[100] = {0};
strcpy(s, (i == 2) ? "botton" : "bottle");
printf("%c\n", s[0]);
return EXIT_SUCCESS;
}

当变量s[]被初始化时,初始化值必须在编译时已知。相等测试 (i == 2) 在运行时发生,因此它无法生成有效的初始值设定项。

但是,您可以使用 char *s,因为您可以在运行时更改指针的值:

char *s = (i == 2) ? "botton" : "bottle";

但是,您不能将 static char *s 与此初始值设定项一起使用,因为它在编译时不是常量。

关于c - "Invalid initializer"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32478314/

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